在另一个片段中添加新数据后刷新Activity中的RecyclerView

时间:2019-01-14 15:16:54

标签: android android-fragments android-recyclerview

  1. 在其上设置了recycerView的活动,并且活动开始片段以插入新数据。

    getSupportFragmentManager()
    .beginTransaction()
    .setCustomAnimations(R.anim.dialog_drop, R.anim.dialog_rise_up)
    .replace(R.id.frame_layout, dropDownDialogue)
    .addToBackStack(null)
    .commit();`
    
  2. 片段具有一个保存按钮,该按钮结束片段如下:

    save.setOnClickListener(new View.OnClickListener() {
         @Override
         public void Onclick(View v){
         //extract data from user.
         adapter.notifyDataSetChanged();
         getActivity().getSupportFragmentManager().popBackStackImmediate();
        }
    });
    

    问题是直到重新启动Activity后,recyclerView才更新 onResumeonStartadapter.notifyDataSetChanged();一起存在

2 个答案:

答案 0 :(得分:2)

https://developer.android.com/guide/components/activities/activity-lifecycle

如果您使用的是Fragment,它应该位于某些Activity的本地(希望是存放您的RecyclerView的那个)。从该Fragment内部,您可以使用Activity访问包含它的getActivity()以及其任何公共成员和方法。

有关更多信息,请参见this SO question

答案 1 :(得分:0)

按下保存按钮时,您可以使用int[][] arr = new int[6][]; for(int i =0; i<6; i++) { arr[i] = new int[1]; } arr[0][0] = 100; arr[1][0] = 50; arr[2][0] = 60; arr[3][0] = 200; arr[4][0] = 10; arr[5][0] = 220; int[][] sortedArr = arr.OrderBy(x => x[0]).ToArray(); for(int i =0; i<6; i++) { Console.WriteLine(sortedArr[i][0]); } 接收通知。例如,将其注册到您的BroadcastReciever中:

Activity

使用private void registerReciver() { BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // broadcast receiver is fired reload your data here } }; IntentFilter intentFilter = new IntentFilter("action"); this.registerReceiver(receiver, intentFilter); } 方法调用registerReciver();,现在您可以通过onCreate()按钮启动它:

save

按下 Intent intent = new Intent(); intent.setAction("action"); getActivity().sendBroadcast(intent); 按钮后,应调用save。现在,您可以再次获取数据并重新加载。即使需要,即使使用onReceive,也可以将数据传递到Intent