我的应用程序目前针对的是 Android 1.6。它包含一个带有CHOICE_MODE_SINGLE的 ListView 。所有项目都实现Checkable。我正在使用setItemChecked(int position, boolean value)根据需要检查/取消选中项目。它可以在 Android 2.1、2.2 和 2.3 上按预期工作。然而,在 Android 1.6 上,不会检查任何项目。
代码如下所示:
Integer checkedIndex = 0; // This is actually set from somewhere else.
void updateCheckedItem() {
int count = adapter.getCount();
for (int i = 0; i < count; i++) {
listView.setItemChecked(i, isChecked(i));
}
// Here, we should have a checked item (unless checkedIndex was null)
SparseBooleanArray checkedPositions = listView.getCheckedItemPositions();
int size = checkedPositions.size();
// On Android 1.6, size is 0 (wrong)
// On Android 2.x, size is 1 (correct)
// Another try...
int checkedPosition = listView.getCheckedItemPosition();
// On Android 1.6, checkedPosition is INVALID_POSITION (-1), meaning nothing is checked (wrong)
// On Android 2.x, checkedPosition is whatever checkedIndex is (correct)
}
boolean isChecked(int position) {
return checkedIndex != null && checkedIndex == position;
}
这个问题通过在代码中设置 ListView 的 ChoideMode 解决了这个问题,而不是 XML。我一开始是在代码中做到这一点的,把它放在 XML 中对我来说没有任何区别。问题仍然出现。
如何在 Android 1.6 上进行这项工作?