2011-03-15 7 views
0

背景:
私はBaseAdapterを拡張して、かなり複雑なアダプタクラスに基づいてGridViewのを持っています。 getViewで何が表示されているかを計算するのはあまりにも多くの作業をしていることがわかります。 getViewは、同じ位置に対して複数回呼び出されることさえあります。 notifyDataSetChanged()があまりにも早く呼び出されるようです。Android:フィルタ機能を備えたアダプタでGridViewをベースにすることは可能ですか?

これは私のコーディングに多大な苦労をもたらしました。ほとんどのコードを他のルーチンに移行しましたが、最終的な表示で選択のフィルタリングを行う必要があることがわかりました。

私はitem.enabled(false)を設定することでこの問題を解決しましたが、すべて削除したいと思います。

私は、アダプタの基礎となるGridViewの &のためのライフサイクルを見つけることができませんが、私は、私はそこに私の変化をフックすることができますしながら、項目が表示される前同様にgetCount()は回数呼び出されることが決定しています私はここであまりにも激しく働かなければならないような気がします。

QUESTION:
私はGridViewのに縛らアダプターとの接続にフィルタークラスを使用することはできますか?例えば

のための私のアダプタのGridViewは36の表示する項目、およびそれだけですべての第三項目を示し意味値「3」にのTextViewセットを持っている含まれている活性を有しています。 adapter.notifyDataSetChanged()が呼び出されると、私は理解する必要があるため、すぐに.getCount()は、私は詳細の多くはここに存在しないことを知っている

getViewメソッドで本当に台無しれ、36を返したいです概念だけでなく、特定の問題の解決策を見つけることができます。

私が見落としている問題を見るには、機能や方法が必要です。

答えて

2

getCountを上書きしましたか?根底にあるデータが変更された後、なぜ36に戻りますか?

あなたはgetCountは、基礎となるデータに依存して作る場合、私はあなたがこの問題を抱えているとは思わない:

@Override 
public int getCount() { 
    return myArray.length; // or whatever your underlying data source is 
} 

編集 - また、あなたはあなたのデータへの変更が呼び出し前を設定してください作りますnotifyDataSetChanged

関連する問題