您的位置:首页 > 其它

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;

}

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: