1

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

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

有什么建议么?

4

1 回答 1

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 交互

于 2013-02-13T10:05:48.740 回答