2017-09-11 2 views
0

現在、3つの異なるフラグメント:「Overview」、「Income」、「Spending」でReclaylerViewアダプターを使用しています。すべてのフラグメントはリストを保持し、SQLite DBからのデータを表示します。これは、所得または支出(またはすべて)に応じて表示されますが、1つのアイテムを削除して現在のフラグメントで更新のみを通知するときです。TablayoutとRecyclerviewを使用してすべてのアダプターに通知する

アイテムを削除すると、すべてのRecyclerViews /アダプタとリストを更新するにはどうすればよいですか?「概要」(すべてのアイテムを表示)と言うことができますか?

+0

ポストをリフレッシュしたいすべての断片に同じ放送受信機を実装することができますこれまでのところ –

答えて

0

あなたは、ブロードキャストを送信し、削除するアイテムがこのブロードキャストを送信しながらnotifyDataSetChanged()

にすべてのフラグメントでそれらを受け取ることができ

Intent intent = new Intent("key_to_identify_the_broadcast"); 
intent.putExtra("refresh", true); 
context.sendBroadcast(intent); 

、その後、すべてのフラグメントのために作成する放送受信機

private final BroadcastReceiver mHandleMessageReceiver = new 
BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     Boolean refresh = 
      intent.getBooleanExtra("refresh",false); 
     if(refresh){ 
      notifyDataSetChanged(); 
     } 
     //you can call any of your methods for using this value for your use case 
    } 
}; 

このブロードキャストをフラグメントのonCreateView()に登録する必要があります

あなたのフラグメントのあなたは(あなたのonDestroyで登録を解除する必要が
IntentFilter filter = new 
     IntentFilter("key_to_identify_the_broadcast"); 
     getActivity().getApplicationContext(). 
       registerReceiver(mHandleMessageReceiver, filter); 

@Override 
public void onDestroy() { 
    try { 

    getActivity().getApplicationContext(). 
     unregisterReceiver(mHandleMessageReceiver); 

    } catch (Exception e) { 
     Log.e("UnRegister Error", "> " + e.getMessage()); 
    } 
    super.onDestroy(); 
} 

あなたはリストにあなたが研究してきたもの

+0

これは私の問題を解決しました!ありがとうございました! :) – beerprophet

関連する問題