3

我正在开发一个具有两种不同配置文件的启动器:一个是主要的,另一个是次要的。如果我进入 Play 商店,然后使用“返回”按钮返回,我会进入我的主配置文件,但在那里,我的 gridview 图标(通过适配器显示)出现双倍(如果我从play store,用后退按钮返回会给我 3 次图标,依此类推)。

如果我在 onresume 方法中重新启动我的主要活动,一切都会好起来的,我的图标不会翻倍、三倍或其他。但我不想重新启动活动,我只想清空我的gridview。

if((admin == true) ){
        Intent intent = getIntent();
        finish();
        startActivity(intent);}
4

3 回答 3

10

我自己也有同样的问题。最简单的方法是:

gridview.setAdapter(null);
于 2013-07-14T08:37:00.073 回答
3

您可以将要使用 gridview 加载的数据放入列表中,然后当您想要更新 gridview 时,只需使用

    list.clear();

然后将更新的数据重新加载到列表中,再次设置适配器。下面显示了我的代码:

我使用gridview从网络加载图像,由Asynctask获取;当我想从设置返回到我的片段/活动时更新这些图像时,我清除包含数据的列表并在AsyncTask中完成重新填充工作。

    public void onStart() {
    super.onStart();
    list.clear();
    //setAdapter(null) is not useful here after testing.
    SharedPreferences preferences= PreferenceManager.getDefaultSharedPreferences(getActivity());
    String sort_order=preferences.getString("pref_sortOrder","popular");
    ParseDataTask parseDataTask=new ParseDataTask();
    parseDataTask.execute(sort_order);
    }

希望能帮助到你 :)

于 2016-08-03T02:11:07.810 回答
0

从 GridView 的适配器中删除项目。您可以通过调用#getAdapter()来获取适配器 。如果适配器不存在,则可能需要在适配器中实现清理方法。如果适配器扩展BaseAdapter你可能需要调用#notifyDataSetChanged()

于 2013-04-30T17:46:46.870 回答