android - Android重新加载网格视图自定义适配器
问题描述
虽然我有一个可行的“解决方案”,但我真的不喜欢它,并认为它会导致内存问题。最终,我有一个活动,其中包含一个由对象数组填充的 GridView -subjectArrayList
在活动中,我有一个按钮,我想在其中“重新加载”数组并更新网格视图。
目前我有这个:
// reload all subjects
subjectAreas = "all";
subjectsArrayList = populateSubjects();
myAdapter = new MyAdapter(getApplicationContext(), subjectsArrayList);
gridView.invalidateViews();
gridView.setAdapter(myAdapter);
我敢肯定有一种更优雅的方法。我担心的是我正在创建另一个适配器而不是回收它。
我看过 notifyDataSetChanged() 但不完全清楚如何使用它,我的各种尝试都没有发生任何事情。
问题:1)我正在做的事情是否正确,或者我担心每次都重新创建我的适配器是正确的?2)有没有更好的方法来实现我想要的?
提前致谢
解决方案
你应该:
- 使用新数据更新适配器
- 调用
myAdapter.notifyDataSetChanged()
更新GridView
更好的是,您应该使用 aRecyclerView
而GridLayoutManager
不是 aGridView
推荐阅读
- python - 刷新 url 时 403 CSRF 验证失败 Django?
- node.js - npm install modules 在 vagrant box 内的本地项目中引发 ENOENT 错误
- jenkins - 如何在 Jenkinsfile 的 pieline.agent.node 块中使用构建参数?
- python - 在python中拆分字符串
- c++ - VSCode (Mac) 2020 中的 C++ std_lib_facilities.h 文件
- ruby-on-rails - Rufus-scheduler 阻塞主线程
- json - 短导入 Typescript 路径映射在 Angular 8 项目中不起作用
- java - 使用 JAXB 数据绑定的通用 CXF 基于 WSDL 的服务器
- scheme - Scheme中的letrec-syntax和let-syntax有什么区别?
- arraylist - 布局相同但数据不同的数组列表(CardView)