10

したがって、リストビューにフィルターを設定した後:

//Log adapter count before filter
listView.getFilter().filter(searchStr)
//Log adapter count after filter

私が達成しようとしているのは、そのフィルタリングの結果のカウントを取得することです。以前のように10個のアイテムがある場合は、フィルターを適用するので、5個のアイテムのみが表示されるようになり、そのカウント「5」を取得したいと思います。フィルターの前後のアダプター数を確認してみましたが、うまくいきませんでした。フィルタを適用すると同じカウントが表示され(BaseExpandableListAdapterを使用しています)、フィルタを再度適用すると、数が前から変わります(ただし、フィルタの前後は同じです)。

以下は、ログに記録されている結果のサンプルです。

Before filter the count is 10. After filter the count is 10.
Before filter the count is 8.  After filter the count is 8.

アダプターが反映されたカウントをすぐに取得しないのではないかと思いましたが、2番目のフィルターでは値が変更されるため、フィルターの後でnotifyDataSetChangedが違いを生むと思いましたが、そうではありませんでした。どんな助けでもいただければ幸いです。

ありがとう。

4

2 に答える 2

28

これは私がそれを行うことができた方法です:

myAdapter.getFilter().filter(searchText, new Filter.FilterListener() {
    public void onFilterComplete(int count) {
         Log.d("log", "result count:" + count);
    }
});
于 2013-02-28T10:00:22.950 に答える
-1

listview.getCount()フィルタを適用してから呼び出してみてください。

于 2013-01-31T14:51:09.933 に答える