按下后退按钮时不会刷新Android Gridview

时间:2014-04-28 09:22:51

标签: android gridview back-button

我在一个活动中有一个网格视图。我使用array-list设置了Adapter。 Gridview正在显示存储在数据库中的项目列表。让我们说它是一些产品。 当我点击网格视图中的任何产品时,它将导航到产品详细信息屏幕。 从产品详细信息屏幕我可以删除产品。如果我删除产品并按后退按钮,它将导航到产品列表屏幕。

预期:产品列表屏幕没有删除项目。

实际:产品列表屏幕随附已删除的项目。触摸此项目时,它将无效。

支持我的问题,请参见下图

Supporting my question,please see below p

4 个答案:

答案 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