我在一个活动中有一个网格视图。我使用array-list设置了Adapter。 Gridview正在显示存储在数据库中的项目列表。让我们说它是一些产品。 当我点击网格视图中的任何产品时,它将导航到产品详细信息屏幕。 从产品详细信息屏幕我可以删除产品。如果我删除产品并按后退按钮,它将导航到产品列表屏幕。
预期:产品列表屏幕没有删除项目。
实际:产品列表屏幕随附已删除的项目。触摸此项目时,它将无效。
支持我的问题,请参见下图
答案 0 :(得分:1)
尝试一些像:
if (homeGridViewDatas.size() > 0) {
homeGridViewAdapter = new HomeGridViewAdapter(activity, context,
homeGridViewDatas);
gvHome.setAdapter(homeGridViewAdapter);
homeGridViewAdapter.notifyDataSetChanged();
}
答案 1 :(得分:1)
您已在OnResume活动方法中从db获取gridview项。当你删除任何项目然后再按回来时,它将调用上一个活动的OnResume方法,你获取新的列表,并在网格上调用notifyDataSetChanged(),以便重新创建视图
答案 2 :(得分:0)
您应该通过调用notifyDataSetChanged
来通知gridadapter哪些内容已更改。在onResume
应该没问题。或者当你更新它时。
答案 3 :(得分:0)
当我点击网格视图中的任何产品时,它会导航我 产品详情屏幕。
当您从gridView
活动(产品列表屏幕)转到详细活动(产品详细信息屏幕。)时,详细活动将在Stack中的gridView
活动之上启动。
如果我删除产品并按回按钮,它将导航我 产品清单屏幕。
当您在详细信息屏幕中删除特定产品并按下后退按钮时,详细活动将从堆栈中删除,因此详细活动下方的gridview活动将显示在前台并变为可见。
产品列表屏幕随附已删除的项目。触摸此项目时 它什么都不做。
但是,您的gridView
活动仍然具有以前的数据。因此,它显示旧数据并且没有任何触摸,因为实际数据与适配器中的数据不同。
解决方案:
您需要在该活动中通知适配器gridView,数据已更改且视图必须相应更新。
每当活动到达前台并且可见时,会调用onResume()
,因此最好在notifyDataSetChanged()
上调用gridadapter
。