2011-12-22 4 views
4

私はアクティビティItemList.javaを持っています。ユーザがアイテムをクリックすると。新しいアクティビティを開始します。ItemDetailAcitivty.javaBアクティビティからAリストデータに通知する方法が変更されましたか?

私がしたいことはです。ユーザーがItemDetailAcitivty.javaのボタンを押したとき。それから、リスト項目をリフレッシュするようにItemList.javaと伝えるべきです。 私はmyListAdapter.notifyDataSetChanged()がリストをリフレッシュすることを知っています。しかし、ItemList.javaはどのようにデータをいつ変更するのかを知るでしょう。

静的メソッドまたは変数にはしません。ハンドラの使い方は分かっていますが、ハンドラを他のアクティビティに渡す方法はわかりません。

自分のイベント/リスナーを作成してリストに関連付けると、イベントが発生したときにリストが変更され、それ以上のものがブロードキャスト受信者のヘルプになる可能性がありますか?

+0

ItemListの参照をItemDetailActivityに渡し、更新機能を呼び出しますか? –

+0

['ContentProvider'](http://developer.android.com/guide/topics/providers/content-providers.html)を使用してください。それはいくつかの仕事ですが、それは報われます。 –

答えて

3

オブザーバーパターン(http://en.wikipedia.org/wiki/Observer_patternを参照)を使用するのが最善の方法ですが、myListAdapter.notifyDataSetChanged()への呼び出しを含むItemList.javaでパブリック静的メソッドを作成できます。

3

startActivityForResult(intent_to_activity)と同じitemlistクラスで、onActivityResult()のメソッドをオーバーライドできます。この方法では、通知データセットが変更され、反映されるはずです。

+0

これは通常、ほとんどの基本的なケースで行うべきことです – binnyb

1

あなたは、古いアクティビティへの参照がAndroidによって生き続けると想定してはいけません。これがすべてデータベースに基づいている場合、ItemListが更新するために何もする必要はありません。そうでない場合は、ItemListアクティビティのonResume()myListAdapter.notifyDataSetChanged()と電話するだけです。

+0

それは恐怖ではありません:(私は毎回これをしたくありません – Arslan

+0

あなたが絶対にそのデータを変更する唯一の時間はItemDetailViewを使用すると、Urbanが提案した静的なブール値フラグをどこかで設定できます。次に、フラグをチェックしてItemListを更新する必要があるかどうかを確認します。数日、数週間、または数か月間あなたの活動が一時停止する可能性があります。 –

関連する問題