私はボレー(もう一度)に問題があります。クラスでボレーリクエストを実行したいので、複数のアクティビティで結果をフィードバックしてUIを更新することができます。私はそれにデータを返し、UIから要求を呼び出すが、今は新しいデータでUIを更新しようとしている。私は答えを見てきましたが、私は構造を理解しようとしていると私はいくつかは、私はあなたが存在として意味を理解想定し、それ別のクラスからのボレーリクエストによるUIの更新
答えて
を通して私の話/助言してくださいすることができ、損失で午前:
Aバレーボール要求戻り、あなたは通常、そこにあるため、通常は(何をすべきか、呼び出し側の活動はすべてが含まれていると仮定すると、これは非常に一般的な例であることを思い出させ、この場合、いくつかの活動
を介して設定いくつかのデータを更新ケースの例外です)、挿入されたばかりですUIホルダーに含まれるデータセットにデータを追加します(例:あなたのリサイクルアダプタ)と、それを更新し、例としては、これと同様の方法を保持するアダプタ次のようになります。
public void updateDataSet(List<Item> items)
{
//mItemList is the adapters member list
if (null != mItemList)
{
mItemList.clear();
mItemList.addAll(items);
}
else
mItemList = items;
notifyDataSetChanged();
}
あなたが要求を発射する直前に、すべてを初期化してください、あなたは以前に解雇要求コールバック内でこれを呼び出します、例えば別の場所で
@Override
public void onResponse(JSONObject response)
{
Log.d(TAG + ": ", "somePostRequest Response : " + response.toString());
// here you need to parse to JSON to a list and then call...
List<Item> items = parseResponse(response);
myAdapter.updateDataSet(items);
}
さて、あなたはいくつかの活動に
Aバレーボール要求戻った何を意味するのかと、私はそれがものを更新したい
オプションのカップルがあります:
- 誰かがコメントで述べたように、
EventBus
に行くことができます。 - グローバルシングルトンであるDataManagerクラスを保持することができます。この場合、データを保持してそこで更新することができます。次に、すべてのアクティビティ(onResumeまたは他の関連するライフサイクルメソッド)がそのデータをプルする。
- 他のUIパート(Fragmentsなど)への参照を保持し、データを渡して更新をトリガーするメンバーメソッドをトリガーするDataManager以外は、オプション2と同じことができます。
個人的に私はオプション3が厄介で多少悪い習慣を見出しますが、他のすべてが失敗した場合(それはしてはならないが、そうであれば)試してみることができます。
さらに多くのオプションがありますが、それはデータ、アプリケーションのアーキテクチャ、コーディングスタイルなどに応じて異なります。
希望すると便利です。
これは非常に役に立ちます。テクニックのいくつかを試して、どちらが私のために働くのかを見ていきます。 - (それは関連する答えの第2部でした)私のおしゃべりな質問に申し訳ありません、私はその時点で非常に強調されたhaha。あなたの入力と時間のために多くのありがとう – Boo
EventBusを使用できます。 EventBusを使用するには、更新を受け取るクラスを登録する必要があります。また、すべてのクラスがイベントを受け取るクラスのイベントを公開するときにクラスを登録する必要があります。ここで
greenrobotのEventBus使った例です:
イベントモデルを:
public class MessageEvent {
/* Additional fields if needed */
}
は購読:
EventBus.getDefault().register(this); // In Activity onCreate method
@subscribe
public void onMessageEvent(MessageEvent event){
// this is the method to receive event
}
は、イベントを公開:
EventBus.getDefault().post(new MessageEvent());
今、このイベントモデルに登録されているすべてのクラスが更新されます。 注:購読しているクラスは生きていなければなりません。誰かが破壊された場合、更新は受けられません。
- 1. 別のクラスの別のスレッドからUIを更新する
- 2. C#別のクラス/スレッドからUIを更新する
- 3. 別のクラスからUIコントロールを更新する
- 4. 別のGPIOListenerクラスからUIを更新します。
- 5. C#別のクラスからTextBoxを更新
- 6. 別のView ControllerのUIボタンからUITableViewを更新する
- 7. アンドロイドの別のスレッドからuiを更新する
- 8. 別の.mファイルからCocoaのUIを更新する
- 9. 別のクラスからのUIへのアクセス
- 10. 別のスレッドからのUIの更新(時間の経過)
- 11. 他のアクティビティまたはクラスからのフラグメントクラスUIの更新
- 12. 別のコントローラからUIを更新する
- 13. 更新別のUIから観察可能なコレクション
- 14. 別のテーブルからの結合によるMySqlの更新
- 15. UIの更新コードからのスレッド
- 16. Swift 3メインスレッドからのUIの更新
- 17. 別のクラスからラベルを更新するC#Not working
- 18. 別のクラスから静的変数を更新する
- 19. 別のクラスからテキストボックスを更新する
- 20. セレンスレッド/クラス内のUIスレッド/クラスのラベルを更新する方法
- 21. 更新UI MapViewからサービス
- 22. C#バックグラウンドワーカーUIからの更新
- 23. WindowsユニバーサルアプリケーションのUIを別のスレッドから更新するにはどうすればよいですか?
- 24. WebアプリケーションUIを別のスレッド(ASP.NETとC#)のIPコールバックから更新する
- 25. iOSの非UIスレッドからUIラベルを更新する方法
- 26. ユニバーサルウィンドウアプリケーションの別のクラスの待っていたメソッドからUIを更新しました
- 27. QProgressBarを別のクラスから更新してください
- 28. 別のクラスからTextFlowを更新してください。JavaFx
- 29. アンドロイドビューは別のクラスと別のスレッドから更新されていません
- 30. UITableViewを更新するセルのクラスから更新する
"今、新しいデータでUIを更新するのに苦労しています" - どのように苦労していますか? – TWL
私はVolleyが何であるか分かりませんが、あなたは 'BroadcastReceiver'のようなものが必要なように思えます。ライブラリを使ってうれしいのなら、 'EventBus'のようなものは完全に健全ですか? – Subby
こんにちは、収集されたデータで情報を更新しません。ビューをロードしてデータを取得して停止しますが、取り出されたデータはUIに挿入されません。 – Boo