我在列表视图中有一个选中的文本视图,每当我点击列表视图中的一个项目时,随机选中的文本视图都会检查(不一定是我按下的那个)这是我的代码
lv2.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
final CheckedTextView checkedTextView = (CheckedTextView) findViewById(R.id.checkedTextView1);
checkedTextView.toggle();
}
});
其中lv2是我的列表视图,checkedTextView1是我在每个listview项目中的检查视图。如何调用特定的checkedTextView。我可以调用一种数组格式吗?例如checkedTextView[1].toggle();
?
这里编辑是我的适配器
public class SpecialAdapter2 extends ArrayAdapter<String> {
private int[] colors = new int[] { R.drawable.row_background_grey,
R.drawable.row_background_white };
public SpecialAdapter2(Context context, int resource, String[] names) {
super(context, resource, names);
// TODO Auto-generated constructor stub
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
int colorPos = position % colors.length;
view.setBackgroundResource(colors[colorPos]);
return view;
}
答案 0 :(得分:1)
尝试将onItemClick()中的代码更改为:
CheckedTextView checkedTextView = (CheckedTextView)arg1.findViewById(R.id.checkedTextView1);
checkedTextView.toggle();
问题是你隐含地在这个上调用findViewById()
- 即。你的活动。在您的活动上调用findViewById()
将使其在整个视图层次结构中搜索它可以使用id checkedTextView1找到的第一个View。这不是你想要的 - 你想在被点击的行项中找到特定的CheckedTextView。因此需要在arg1上调用findViewById()
。
答案 1 :(得分:1)
试试这个
final CheckedTextView checkedTextView = (CheckedTextView) arg1;
checkedTextView.toggle();