2012-01-10 12 views
0

Iは、主な活動は、リストを生成するアプリケーションを有しており、主な活動で、フィルタリストとチェックボックスを使用してカスタマイズリストビュー内のリスト全体のサブセットを示しています多くのタブが存在します。異なる活動にリストをフィルタリング

それぞれのタブにアダプタがあり、メインリストをフィルタリングして関連するサブセットを独自のアダプタに追加するさまざまなonCreate()でスレッドを実行しています。チェックボックスの状態をSharedPreferencesに保存しています。

さまざまなListActivities間のチェックボックスの同期に問題があります。 1 ListActivityのボックスをチェックして別のタブに切り替えると、そこには更新されません。アプリを終了して再起動したときにのみ、メインアクティビティでリストが再生成され、SharedPreferencesが読み込まれ、すべてのチェックボックスが更新されます。

さまざまなタブのさまざまなListActivitiesが常に同期されるように、これを瞬時に行う方法を教えてください。

ありがとうございました。

答えて

0

あなたは、アダプタでフィルタを使用することをお勧めします(つまり、チェックボックスの選択肢から読み込む独自のフィルタを実装する)。非常に多くのスレッドを持つことは、次のことです。a)プログラマーにとって混乱します。 b)同期問題の原因。すべてのArrayAdapterはFilterableインターフェイスを実装しており、getFilter()メソッドをオーバーライドして独自のフィルタを返すことができます。このフィルターでは、要素を必要なものにフィルターすることができます。私はこのポストはあなたを助けるべきだと思う:How to write a custom filter for ListView with ArrayAdapter。おそらく、実装している各フィルターの設定を読む必要があります。

+0

ありがとうございました。 CharSequenceではなくint値に基づいてフィルタを実装するにはどうすればよいですか? performFiltering()およびpublishResults()は、CharSequenceパラメータのみを受け入れるようです。 – user1118764

+0

また、別のアクティビティで定義または初期化されたアダプタにアクセスするにはどうすればよいですか。私はSetListAdapter()に他のアクティビティのアダプタを渡すことでそうしようとしましたが、getCount()が空のリストを持っていますが、そのリストには完全に値が設定されています。私はそれをデバッグし、アダプタのgetView()がまったく呼び出されていないことを発見しました。 – user1118764

+0

メソッドの署名を確実に変更することはできません。しかし、私はあなたがする必要はないと思う - 私はあなたが正しく渡された値を無視し、設定からintを読み取ることができます。私はあなたが間違って持って、あなたはまだ値で渡す必要がある場合は、String.valueof(your_int)を使用し、Integer.valueOf(char_seq.toString())を介しての方法でデシリアライズすることができます。 –

関連する問題