首页 > 解决方案 > Android重新加载网格视图自定义适配器

问题描述

虽然我有一个可行的“解决方案”,但我真的不喜欢它,并认为它会导致内存问题。最终,我有一个活动,其中包含一个由对象数组填充的 GridView -subjectArrayList

在活动中,我有一个按钮,我想在其中“重新加载”数组并更新网格视图。

目前我有这个:

// reload all subjects
        subjectAreas = "all";
        subjectsArrayList = populateSubjects();
        myAdapter = new MyAdapter(getApplicationContext(), subjectsArrayList);
        gridView.invalidateViews();
        gridView.setAdapter(myAdapter);

我敢肯定有一种更优雅的方法。我担心的是我正在创建另一个适配器而不是回收它。

我看过 notifyDataSetChanged() 但不完全清楚如何使用它,我的各种尝试都没有发生任何事情。

问题:1)我正在做的事情是否正确,或者我担心每次都重新创建我的适配器是正确的?2)有没有更好的方法来实现我想要的?

提前致谢

标签: androidgridviewadapter

解决方案


你应该:

  • 使用新数据更新适配器
  • 调用myAdapter.notifyDataSetChanged()更新GridView

更好的是,您应该使用 aRecyclerViewGridLayoutManager不是 aGridView


推荐阅读