现在的位置: 首页 > 综合 > 正文

Gridview 点击单元格变色,点另一个时第一个还原(Tag)

2013年01月25日 ⁄ 综合 ⁄ 共 2662字 ⁄ 字号 评论关闭

文章出处: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;
   }
  }

 }

}

抱歉!评论已关闭.