我正在进行具有3个片段的片段活动。每个片段都实现了Recycle-view及其适配器。我想从列表中删除然后更新另一个片段列表,但我有问题。
public void deleteIt(View v) {
ZeroActivity.dao.deleteMessages(serverId); // delete the mesage from DB
switch (TransactionActivity.current_tab) {
case 0:
ZeroActivity.itemData_1.remove(data_list_position); // delete the message from arrayList
ZeroActivity.recycleViewAdapter1.notifyItemRemoved(data_list_position); //remove message from Adapter
break;
case 2:
但总是在第一次删除后选择最终项目应用程序崩溃并收到此错误:
Invalid index 4, size is 3
似乎问题是适配器和Arraylist的索引不匹配!
答案 0 :(得分:0)
您使用相同的索引值删除两次,这就是您第二次收到错误的原因。只需执行此操作即可。我希望它会起作用
ZeroActivity.itemData_1.remove(data_list_position); // delete the message from arrayList
ZeroActivity.recycleViewAdapter1.notifyDataSetChanged();
或只调用此行
ZeroActivity.recycleViewAdapter1.notifyItemRemoved(data_list_position)
答案 1 :(得分:0)
我最终通过添加以下内容来刷新回收视图项目计数来解决此问题:
notifyItemRangeChanged(data_list_position, newsize);
似乎Recycle-view需要在删除或添加新项目后更新它的列表计数。
ZeroActivity.itemData_1.remove(data_list_position); // delete the message from arrayList
ZeroActivity.recycleViewAdapter1.notifyItemRemoved(data_list_position); //remove message from Adsapter
ZeroActivity.recycleViewAdapter1.notifyItemRangeChanged(data_list_position, ZeroActivity.itemData_1.size());