各フラグメントが10のフラグメントを持つtablayoutとviewpgaerを持っていて、各フラグメントがAPIにリクエストを送信し、結果が各フラグメントのリサイクラービューに表示されます。ユーザーは投稿を作成してサーバーに追加することができます。投稿を追加すると、投稿されたそれぞれのカテゴリに戻ってきます。ここで、フラグメントをリフレッシュして、リサイクラビューを更新して新しいエントリを表示する必要があります。以下のコードが実行されるように、ブロードキャストは、ユーザーが成功した後の時にフラグメントに送信されます。タブを変更せずにフラグメント内のリサイクラービューをリフレッシュする方法
BroadcastReceiver broadRefresh = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("recd broadcast mainact" + intent.getStringExtra("refresh"));
if (intent.getStringExtra("refresh") != null) {
getFragmentManager()
.beginTransaction()
.detach(CarsFragment.this)
.attach(CarsFragment.this)
.commit();
}
}
};
再び呼び出されますが、リサイクルビューが更新されていないoncreateviewとonviewcreatedフラグメント。 AdsList arraylistをクリアして、データloadnormalRv()を取得するためのメソッドを再度呼び出すことを試みました。この場合、ページが空白になり、タブを変更してからこのタブに戻り、データが表示されたリサイクルビューが表示されます。いくつかのボタンは、このページにfitlerまたはソートのようなデータが表示されます。
ここに完全なフラグメントコードlinkがあります。 助けてください。ありがとう。
あなたはrecyclerViewを更新する必要がある場合は、(アダプタに新しいデータセットを渡した後に) 'notifyDataSetChanged()'を呼び出すことができます。なぜあなたは同じフラグメントを切り離して貼り付ける必要があるのか分かりません。 –
@AhmedAbidi arraylistには既にアイテムがあります。データを再取得すると.addメソッドは最後にアイテムを追加しますが、アイテムは時系列順に表示する必要があります、最新の最初のように、APIは正しい順序でアイテムを送信していますが、arraylistではアイテムが最後に追加されるため、フラグメントが再び作成されると、arraylistが再初期化され、 arrylistをクリアしてみたところ – Ghanendra
アダプタから配列全体を置き換えて、@AhmedAbidiと同じようにnotifyDataSetChanged()を使ってください – AmirG