0

私はtablayoutに2つの断片があります。ビューペイジャーを使って設定しました。 最初の断片には、データでいっぱいのrecyclerviewがあります。 2番目の断片にはスピナーがあります。 ユーザーがスピナーで何かを選択すると、選択に従って、recyclerviewを新しいデータで更新する必要があります。 2番目のフラグメントで、ユーザーがスピナーからオプションを選択すると、最初のフラグメントにスワイプされ、recyclerviewは新しいデータで既に更新されています。Android - ビューページャの別のフラグメントからrecyclerviewを更新するにはどうすればよいですか?

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

答えて

0

あなたはさまざまな方法でそれを行うことができます。

  1. Intent を使用し、その中にいくつかの余分を置く:

    Intent intent = new Intent(); 
    intent.putExtra("foo",somevalue); 
    

    その後、

    sendBroadcast(intent)

    でそれを送信します

    あなたのレシーバークラスは、 BroadcastReceiver クラスを拡張し、 onReceiveメソッドでデータを更新するだけです。

    public class receiver extends BroadcastReceiver { 
        @Override 
        public void onReceive(Context context, Intent intent) { 
         //manipulate your data 
        } 
    } 
    

  2. は、あなたのデータが含まれているSingleton Classを使用して、あなたの受信機を登録することを忘れないでください。だから、RecyclerViewのアダプタと親のデータのリストを入れ

0

を最初のフラグメントから(スピナー選択後)データを設定し、(onCreate()方法で)あなたの第2のフラグメントからそれを得ることができますその断片の代わりに活性を有する。 SpinneronItemSelected()には、adapter.notifyDatasetchanged(またはnotifyItem(Range)Inserted/Changed/Removed())を呼び出します。

フラグメント間通信がたくさんある場合は、これを達成するための非常に簡単な方法は、EventBus(https://github.com/greenrobot/EventBus)を実装することです。両方のフラグメントをEventBusに登録し、フラグメントBのスピナーでアイテムが選択されたら、SpinnerItemSelectedイベントを送信します。フラグメントAは、バスに登録されている場合はそれを受け取り、それを受け取ったらnotifyDatasetChanged()に電話することができます。

関連する問題