データを動的に変更する Android アプリケーションに ListView があります。このメソッドを使用してonFilterComplete()
、ListView の内容を変更します。
Pre Ice Cream Sandwhich 次のコードは正常に動作します。
if(adapter != null) {
adapter.notifyDataSetInvalidated();
lview3.invalidateViews();
adapter.getFilter().filter(aa1.getItem(item), new Filter.FilterListener() {
public void onFilterComplete(int count) {
adapter.notifyDataSetChanged();
if(lview3.getCount() == 0){
lview3.setVisibility(View.GONE);
}
else{
lview3.setVisibility(View.VISIBLE);
}
}});
ただし、フィルターを使用すると画面が適切に更新されないアイス クリーム サンドでは、フィルターが以前の ListView よりも少ない数のエントリを返す場合、古いリスト データはバックグラウンドでまだ表示されているように見えます。このスクリーンショット:
スクリーン ショットから、ListView の最初のエントリがどこにあるかを確認できます。表示されるのはこれだけです。以前の結果が下にまだ表示されている場所を確認できます。画面が正しく更新されていないかのようです。
ホームボタンを選択してホーム画面からアプリケーションを終了し、戻ると、次のスクリーンショットのようにすべてが表示されます。
Ice Cream Sandwhich の ListView を適切に更新するために実装する必要があるものは他にありますか? 他の誰かが同様の問題に遭遇しましたか?
私が持っているものは、ICSの前にうまく機能します。