返回
Fragment中如何从JSON显示ArrayList?
Android
2024-06-08 14:31:57
在 Fragment 中从 JSON 显示 ArrayList
问题
在将 ArrayList 保存为 JSON 并存储为 SharedPreferences 后,无法在 Fragment 中使用 RecyclerView 显示该 ArrayList。
解决方法
1. 读取 SharedPreferences 中的 JSON 数据:
- 使用
getSharedPreferences()
读取 SharedPreferences。 - 使用
getString()
读取 JSON 字符串。
2. 使用 Gson 将 JSON 转换为 ArrayList:
- 使用 Gson 库将 JSON 字符串转换为 ArrayList。
- 使用
TypeToken
指定 ArrayList 类型。
3. 更新 RecyclerView 适配器:
- 使用
updateList()
方法更新适配器中的数据。 - 使用
notifyDataSetChanged()
通知 RecyclerView 刷新数据。
代码示例
// Fragment 中读取 JSON 数据并更新适配器
SharedPreferences preferences = getSharedPreferences("CategoryInfo", MODE_PRIVATE);
String json = preferences.getString("category_info", "");
Gson gson = new Gson();
Type type = new TypeToken<ArrayList<CategoryList>>() {}.getType();
ArrayList<CategoryList> categoryList = gson.fromJson(json, type);
recyclerAdapter.updateList(categoryList);
recyclerAdapter.notifyDataSetChanged();
常见问题解答
Q1. 无法读取 SharedPreferences 数据?
- 确保已正确设置 SharedPreferences 名称和模式。
Q2. Gson 转换失败?
- 确保已将 Gson 库添加到 Gradle 依赖项。
- 确认 ArrayList 类型与 JSON 数据中的一致。
Q3. RecyclerView 刷新不起作用?
- 确保已调用
notifyDataSetChanged()
。 - 检查 RecyclerView 适配器是否正确实现。
Q4. 性能问题?
- 对于大量数据,可以考虑使用 DiffUtil 或 RecyclerView 列表动画。
Q5. 找不到 TypeToken
类?
- 导入
com.google.gson.reflect.TypeToken
包。