我有两个RecyclerView适配器。而且,我在这两个适配器中使用SharedPreferences。
在第一个适配器中,我保存araayList大小的String值,如String.valueOf(dataList.size())
。第一个适用于共享偏好的适配器中的代码如下:
public class ItemRowHolder extends RecyclerView.ViewHolder {
protected TextView itemTitle;
protected RecyclerView recycler_view_list;
protected TextView lblnoOfItems;
public ItemRowHolder(View view) {
super(view);
this.itemTitle = (TextView) view.findViewById(R.id.itemTitle);
this.recycler_view_list = (RecyclerView) view.findViewById(R.id.recycler_view_list);
this.lblnoOfItems = (TextView) view.findViewById(R.id.lblnoOfItems);
sharedPreferences = mContext.getSharedPreferences("DataList", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("MyDataList", String.valueOf(dataList.size()));
editor.apply();
}
}
并且,我在onCreateViewHolder()
内的另一个适配器中获取共享的Preference值。这是代码:
@Override
public SingleItemRowHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(viewGroup.getContext());
String value = pref.getString("MyDataList", null);
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.list_single_card, null);
SingleItemRowHolder mh = new SingleItemRowHolder(v);
return mh;
}
我调试了几次,发现当我在第二个适配器String value = pref.getString("MyDataList", null)
接收时,我变为空。
我在这里做错了吗?此外,有人可以告诉您这是否是在RecyclerView适配器中接收共享首选项值的正确方法。
答案 0 :(得分:1)
在onCreateViewHolder()的第二个适配器中,您的共享pref错误, 替换
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(viewGroup.getContext());
与
SharedPreferences pref = viewGroup.getContext().getSharedPreferences("DataList", Context.MODE_PRIVATE);
通过阅读以下android文档,您可以了解更多相关信息: https://developer.android.com/training/basics/data-storage/shared-preferences.html#GetSharedPreferences