Gridview 点击单元格变色,点另一个时第一个还原(Tag)
2012-04-09 08:49
429 查看
文章出处:http://www.eoeandroid.com/blog-572991-2608.html
1.先上main布局(main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<GridView android:layout_width="wrap_content"
android:layout_height="150dip"
android:id="@+id/gridview"
android:gravity="center_horizontal"
android:horizontalSpacing="5px"
/>
</LinearLayout>
2.组成Gridview的子布局(gridview.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linear"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/gridtext"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
3.具体实现代码
public class OtherActivity extends Activity {
private String str = "A15B3456183CS";
private GridView gv;
private TextView textview;
private GridAdapter adapter;
int result;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
gv = (GridView) findViewById(R.id.gridview);
adapter=new GridAdapter();
gv.setAdapter(adapter);
gv.setNumColumns(str.length());
}
private class GridAdapter extends BaseAdapter {
@Override
public int getCount() {
// TODO Auto-generated method stub
return str.length();
}
@Override
public Object getItem(int pos) {
// TODO Auto-generated method stub
return pos;
}
@Override
public long getItemId(int pos) {
// TODO Auto-generated method stub
return pos;
}
Object tvPos;
@Override
public View getView(int pos, View convertView, ViewGroup arg2) {
if (convertView == null) {// 第一屏
convertView = LayoutInflater.from(OtherActivity.this).inflate(
R.layout.gridview_child, null);
}
LinearLayout linear = (LinearLayout) convertView
.findViewById(R.id.linear);
textview = (TextView) convertView
.findViewById(R.id.gridtext);
textview.setText(str.charAt(pos) + "");
linear.setOnClickListener(new OnClick(pos, textview));
// 以position标记
linear.setTag(pos);
return convertView;
}
class OnClick implements OnClickListener {
public int pos;
private TextView tview;
public OnClick(int pos, TextView tview) {
this.pos = pos;
this.tview = tview;
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (tvPos != null) {
LinearLayout tv = (LinearLayout) gv.findViewWithTag(tvPos);
TextView tt = (TextView) tv.getChildAt(0);// 从Layout中获得子view
tt.setTextColor(Color.WHITE);
}
tview.setTextColor(Color.RED);
tvPos = pos;
}
}
}
}
1.先上main布局(main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<GridView android:layout_width="wrap_content"
android:layout_height="150dip"
android:id="@+id/gridview"
android:gravity="center_horizontal"
android:horizontalSpacing="5px"
/>
</LinearLayout>
2.组成Gridview的子布局(gridview.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linear"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/gridtext"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
3.具体实现代码
public class OtherActivity extends Activity {
private String str = "A15B3456183CS";
private GridView gv;
private TextView textview;
private GridAdapter adapter;
int result;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
gv = (GridView) findViewById(R.id.gridview);
adapter=new GridAdapter();
gv.setAdapter(adapter);
gv.setNumColumns(str.length());
}
private class GridAdapter extends BaseAdapter {
@Override
public int getCount() {
// TODO Auto-generated method stub
return str.length();
}
@Override
public Object getItem(int pos) {
// TODO Auto-generated method stub
return pos;
}
@Override
public long getItemId(int pos) {
// TODO Auto-generated method stub
return pos;
}
Object tvPos;
@Override
public View getView(int pos, View convertView, ViewGroup arg2) {
if (convertView == null) {// 第一屏
convertView = LayoutInflater.from(OtherActivity.this).inflate(
R.layout.gridview_child, null);
}
LinearLayout linear = (LinearLayout) convertView
.findViewById(R.id.linear);
textview = (TextView) convertView
.findViewById(R.id.gridtext);
textview.setText(str.charAt(pos) + "");
linear.setOnClickListener(new OnClick(pos, textview));
// 以position标记
linear.setTag(pos);
return convertView;
}
class OnClick implements OnClickListener {
public int pos;
private TextView tview;
public OnClick(int pos, TextView tview) {
this.pos = pos;
this.tview = tview;
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (tvPos != null) {
LinearLayout tv = (LinearLayout) gv.findViewWithTag(tvPos);
TextView tt = (TextView) tv.getChildAt(0);// 从Layout中获得子view
tt.setTextColor(Color.WHITE);
}
tview.setTextColor(Color.RED);
tvPos = pos;
}
}
}
}
相关文章推荐
- Jquery鼠标点击后变色,点击另一个按钮颜色还原
- android gridview 选择变色 再点击还原 并支持多选。记录贴 01
- 点击单元格变色 点另一个时 原先的去色 点中的变色
- GridView拖拽删除,点击变色添加、再点击还原删除
- Jquery鼠标点击后变色,点击另一个按钮颜色还原
- Android:GridView中实现点击Item变色,再点击还原。
- Android 点击ListView(或GridView)的一个item,使其里面textview变色,点击另一个这个恢复原来颜色
- Jquery鼠标点击后变色,点击另一个按钮颜色还原
- Android:GridView中实现点击Item变色,再点击还原。
- 连接点击后变色,点击另一个连接则现连接变色,前连接还原
- Android酱油笔记之Gridview第一个item点击效果问题
- Android GridView 第一个Item 点击没反应
- DataGrid和GridView单击背景变色双击颜色还原
- gridview 鼠标点击行变色 等实现
- GridView 加载空行并点击编辑每一个单元格
- GridView 加载网络图片 | 点击 Item 传递图片到另一个 Avtivity
- GridView自适应高度后,第一个Item点击无效
- jQuery操作Gridview全选,点击checkbox变色,隔行变色,鼠标悬停变色!
- GridView里LinkButton点击行变色
- DataGrid和GridView单击背景变色双击颜色还原