14

ArrayAdapterに接続されたListViewがあります。ここで、Artistは私の単純なクラスであり、IDと名前しかありません。

次に、ListViewをフィルタリングしたいので、次のように呼び出します。

artistAdapter.getFilter().filter("bla", new Filter.FilterListener() {
    public void onFilterComplete(int count) {
        Log.d(Config.LOG_TAG, "filter complete! count: " + count); // returns 8
        Log.d(Config.LOG_TAG, "adapter count: " + artistAdapter.getCount()); // return 1150
    }
});

最初のデバッグステートメントは8のカウントを出力します。これは、「bla」で始まるリストアイテムの現在のカウントですが、アダプターはそれを取得しません。2番目のdebugステートメントは、カウント1150アイテムを出力します。これがリスト内のアイテムの完全な数です。

したがって、どういうわけか、フィルターは、基になるデータをフィルター処理したことをアダプターに通知しません。

私は今知りたいです:それがフィルターから更新を取得するようにアダプターに何かをコーディングする必要がありますか?カスタムフィルターを作成する必要がありますか?私は何をしなければなりませんか?

4

2 に答える 2

1

notifyDataSetChanged();メソッド onFilterComplete で使用できると思います。

于 2010-11-29T09:59:53.797 に答える