bindView()中的ListView.setItemChecked()从我刚刚单击的EditText中获取焦点

时间:2013-02-13 09:17:10

标签: java android listview android-edittext android-cursoradapter

我在listview项目中有一个Edittext和一个CheckedTextView(布局实现了Checkable)。当我单击EditText时,CursorAdapter的bindView()方法调用ListView.setItemChecked()(我这样做是为了恢复在清除过滤器后可能必须恢复的CheckMarks)。但是,ListView.setItemChecked()似乎会立即从我刚刚单击的EditText中删除焦点(或者其他发生的事情?),所以现在我再也不能使用EditText了。

我有没有办法在bindView()中调用ListView.setItemChecked()而没有这样的副作用?我已经尝试在adapter.getFilter()。filter()之后调用ListView.setItemChecked()(在bindView()之外),但在这种情况下似乎新项目列表尚不可用,因为过滤是在后台完成的线。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

找到答案:像这样使用FilterListener类

adapter.getFilter()。filter(“”,new 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不能在bindView()中使用而不与edittext交配