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

編集:厳密に言えば、これは答えではありません

于 2013-02-13T10:05:48.740 に答える