我在列表视图项中有一个Edittext和一个CheckedTextView(布局实现Checkable)。当我单击EditText时,CursorAdapter的bindView()方法将调用ListView.setItemChecked()(这样做是为了还原在清除过滤器后可能必须还原的CheckMark)。但是,ListView.setItemChecked()似乎立即从我刚刚单击的EditText中夺走了焦点(或者这里发生了其他事情?),所以现在我不能再使用EditText。
我有一种方法可以在没有这种副作用的情况下在bindView()中调用ListView.setItemChecked()吗?我已经尝试过在adapter.getFilter()。filter()(在bindView()之外)之后调用ListView.setItemChecked(),但是在这种情况下,新项目列表似乎尚不可用,因为过滤是在后台完成的线。
有什么建议么?
最佳答案
找到了答案:像这样使用FilterListener类
adapter.getFilter()。filter(“”,新的FilterListener(){
@Override
public void onFilterComplete(int count) {
for (int i = 0; i < adapter.getCount(); i++) {
if (selected.contains((int) adapter.getItemId(i)))
listView.setItemChecked(i, true);
}
}
});
编辑:严格来说,这不是一个答案,因为我仍然不知道为什么setItemChecked不能在不与edittext交互的情况下在bindView()中使用