Java bindView()中的ListView.setItemChecked()使我刚才单击的EditText失去焦点

Java bindView()中的ListView.setItemChecked()使我刚才单击的EditText失去焦点,java,android,listview,android-edittext,android-cursoradapter,Java,Android,Listview,Android Edittext,Android Cursoradapter,我在listview项中有一个Edittext和一个CheckedTextView(布局实现可检查)。当我单击EditText时,CursorAdapter的bindView()方法调用ListView.setItemChecked()(我这样做是为了还原清除筛选器后可能必须还原的复选标记)。但是,ListView.setItemChecked()似乎会立即从我刚才单击的EditText中移除焦点(或者这里发生的其他事情?),因此现在我不能再使用EditText了 我想知道有没有一种方法可以在b

我在listview项中有一个Edittext和一个CheckedTextView(布局实现可检查)。当我单击EditText时,CursorAdapter的bindView()方法调用ListView.setItemChecked()(我这样做是为了还原清除筛选器后可能必须还原的复选标记)。但是,ListView.setItemChecked()似乎会立即从我刚才单击的EditText中移除焦点(或者这里发生的其他事情?),因此现在我不能再使用EditText了

我想知道有没有一种方法可以在bindView()中调用ListView.setItemChecked()而不会产生这样的副作用?我已经尝试在adapter.getFilter().filter()之后调用ListView.setItemChecked()(在bindView()之外),但在本例中,新的项目列表似乎还不可用,因为筛选是在后台线程中完成的


有什么建议吗?

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

adapter.getFilter().filter(“,新的FilterListener(){

@覆盖
已完成的公共无效过滤器(整数计数){
对于(inti=0;i

编辑:严格来说,这不是一个答案,因为我仍然不知道为什么setItemChecked不能在bindView()中使用,而不与edittext交互

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

adapter.getFilter().filter(“,新的FilterListener(){

@覆盖
已完成的公共无效过滤器(整数计数){
对于(inti=0;i
编辑:严格地说,这不是一个答案,因为我仍然不知道为什么setItemChecked不能在bindView()中使用,而不与edittext交互

  @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);
    }
  }
});