如何通知recyclerview适配器插入数据的新项目
问题描述:
我知道使用了notifyItemInserted(position),但在大多数示例中,我已经看到它在Click Listener的帮助下被触发。如何通知recyclerview适配器插入数据的新项目
但在我的情况下,我希望适配器知道更改并在按下其他活动中的按钮时更新其视图。
我该如何做到这一点?
考虑下面示例场景: 1)应用与活动开始甲
2)活动A包含recyclerview
3)如当前数据为空没有物品在recyclerview所示
4)不知何故,我进入活动B
4)我更新了数据并按下按钮
5)作为新的数据是存在的,recyclerview现在具有与更新的数据
答
如果它适合您,请创建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和大家 –
答
- 与startActivityForResult意图打开活动乙
- 回来从活动B与数据
- 在活动A onActivityResult更新单个视图中的数据并通知您的适配器
考虑SwipeRefreshLayout? – Akshay
您可以在模型中存储数据,同时处于活动B中,现在再次回到您的适配器中,您可以使用swiperefreshlayout并根据您的需要实现这些方法:notifyDataSetChanged()或notifyItemChanged(int)或notifyItemRangeChanged(int,int) 。请参阅此链接(http://*.com/questions/33789345/whats-better-notifydatasetchanged-或-notifyitemchanged-in-loop) –
不,这是行不通的。我希望RW中的新视图在Activity B中按下按钮时出现。像Person这样的东西填充表单字段并提交,然后在活动A –