【发布时间】:2011-08-20 17:47:47
【问题描述】:
大家好,我知道有很多实现自定义适配器的教程,但我不相信这适合我。我有一个由两个 TextView 和一个 CheckBox 组成的自定义项目布局的列表视图。我有以下代码:
list.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> adapter, View view, int position,
long rowid) {
CheckBox c = (CheckBox) view.findViewById(R.id.item_chkbox);
c.setChecked(!c.isChecked());
String n = ((TextView) view.findViewById(R.id.item_charName)).getText().toString();
String p = ((TextView) view.findViewById(R.id.item_playerName)).getText().toString();
...
当我点击列表中的某个项目时,会触发并选中一个复选框,但它不是正确的。这也不是随机的。被触发的 CheckBox 总是在对面,镜像在列表的中心。例如,如果我有一个列表:
0 1 2 3 4
然后轻按“0”,4 的检查就会触发。如果我点击 1,3 的检查就会触发。如果我点击 2,2 的检查就会触发。更奇怪的是,如果我点击 0 两次,3 次检查,然后 0 次检查。点击第三次,取消选中 3 次。第四 - 0 取消选中。这在所有情况下都继续存在。我不太清楚发生了什么。
请注意字符串 n 和 p 都正确输出。换句话说,点击 0 将在相应的列表项中检索“名称”的字符串。只有 CheckBoxes 不正常。有什么想法吗?
【问题讨论】:
-
嗯...... onItemClick 方法的其余部分是什么?您的适配器存储什么?
-
嗯,你知道我搜索了几天,显然没有做得很好,我遇到了一个非常相似的问题:stackoverflow.com/questions/4834142/…,我现在正在尝试关注他们的解决方案。我不知道他们对“EventDbAdapter”类的使用是从哪里来的。
标签: java android listview checkbox listactivity