如何通知recyclerview适配器插入数据的新项目

问题描述:

我知道使用了notifyItemInserted(position),但在大多数示例中,我已经看到它在Click Listener的帮助下被触发。如何通知recyclerview适配器插入数据的新项目

但在我的情况下,我希望适配器知道更改并在按下其他活动中的按钮时更新其视图。

我该如何做到这一点?

考虑下面示例场景: 1)应用与活动开始甲

2)活动A包含recyclerview

3)如当前数据为空没有物品在recyclerview所示

4)不知何故,我进入活动B

4)我更新了数据并按下按钮

5)作为新的数据是存在的,recyclerview现在具有与更新的数据

+3

考虑SwipeRefreshLayout? – Akshay

+0

您可以在模型中存储数据,同时处于活动B中,现在再次回到您的适配器中,您可以使用swiperefreshlayout并根据您的需要实现这些方法:notifyDataSetChanged()或notifyItemChanged(int)或notifyItemRangeChanged(int,int) 。请参阅此链接(http://*.com/questions/33789345/whats-better-notifydatasetchanged-或-notifyitemchanged-in-loop) –

+0

不,这是行不通的。我希望RW中的新视图在Activity B中按下按钮时出现。像Person这样的东西填充表单字段并提交,然后在活动A –

如果它适合您,请创建List数据模型的全局实例您要更新RecyclerView

List<DataModel> dataModelList = new ArrayList<>(); 

可以延长Application类的类,你要做到这一点或其他地方。

现在ActivityA

public class ActivityA extends AppCompatActivity { 
    YourAdapter adapter; 
    RecyclerView recyclerView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    recyclerView = (RecyclerView) findViewById(R.id.recyclerView); 

    adapter = new YourAdapter(YourClassWhereYouPutDataModelList.dataModelList) 
    recyclerView.setAdapter(adapter); 


    @Override 
    protected void onResume() { 
     super.onResume(); 
     adapter.notifyDataSetChanged(); 
    } 
} 

现在,在您ActivityB

public class ActivityA extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       //your code to get value 
       YourClassWhereYouPutDataModelList.dataModelList.add(YourValue); 
       //Now it's up to you, either finish it using finish() or continue working 
       //Whenever you go to ActivityA, RecyclerView will be updated 
      } 
     }); 
    } 
} 
+0

感谢waqas和大家 –

  1. 与startActivityForResult意图打开活动乙
  2. 回来从活动B与数据
  3. 在活动A onActivityResult更新单个视图中的数据并通知您的适配器