我正在尝试设置一个 ListView 项,在第一次单击时将其设置为选中状态,然后再次单击以取消选中状态,这在下面已经实现了。问题是,如果我单击该项3次,则会得到一个未选中的项,而不是用户期望的选中项(第1次单击:选中,第2次单击:取消选中,第3次单击:选中,依此类推...)
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
if(position == Constants.lastSelection) {
list.setItemChecked(position, false);
} else {
list.setItemChecked(position, true);
Constants.lastSelection = position;
}
我尝试过其他逻辑,每次单击已选中的项目时都会切换选中/未选中状态,但当用户不可避免地单击随机项目、多次单击某些项目等时,这会引起问题。
有什么好的思路吗?谢谢!
编辑:
Constants.lastSelection在此之前没有设置。
list.setItemChecked(Constants.lastPosition, false);。 - njzk2getCheckedItemIds和getCheckedItemPositions。(这使得Constants.lastSelection可能无用) - njzk2list.setItemChecked(position, !list.isItemChecked(position));这个怎么样? - HyperionsetItemChecked()来设置项目,当使用list.setChoiceMode(ListView.CHOICE_MODE_SINGLE);时,它们只是变为已选/已勾选状态。 - zngb