我在列表视图项中有一个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()中使用

07-28 12:49