我试图实现SharedPreference 以在我的适配器中存储复选框选中列表RecyclerView
。我能够正确记录已检查的列表数组。但我无法将其保存到共享首选项并在每次重新打开应用程序时恢复它。
这是我的RecyclerView
适配器代码。
public class HomeManager extends RecyclerView.Adapter<HomeManager.RecyclerViewHolder> {
private static DisplayImageOptions displayOptions;
static View v1;
private SparseBooleanArray mCheckedItems = new SparseBooleanArray();
static {
displayOptions = DisplayImageOptions.createSimple();
}
public static class RecyclerViewHolder extends RecyclerView.ViewHolder {
CheckBox mCheck;
RecyclerViewHolder(final View itemView) {
super(itemView);
mCheck = (CheckBox) itemView.findViewById(R.id.PROJECT_fav);
SharedPreferences update = v1.getContext().getSharedPreferences("my_prefs", 0);
String Check = update.getString("Check", "");
Log.e("Checked Array = ", Check);
}
}
@Override
public RecyclerViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
v1 = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.recyclerview_item, viewGroup, false);
return new RecyclerViewHolder(v1);
}
@Override
public void onBindViewHolder(final RecyclerViewHolder viewHolder, int i) {
// viewHolder.mCheck.setChecked(mCheckedItems);
viewHolder.mCheck.setChecked(mCheckedItems.get(i));
viewHolder.mCheck.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
Snackbar snackbar = Snackbar.make(viewHolder.itemView, "Item Favorited", Snackbar.LENGTH_SHORT);
snackbar.show();
} else {
Snackbar snackbar = Snackbar.make(viewHolder.itemView, "Item Unfavorited", Snackbar.LENGTH_SHORT);
snackbar.show();
}
int position = viewHolder.getAdapterPosition();
mCheckedItems.put(position, isChecked);
List<Integer> selected = new ArrayList<>();
for (int i = 0; i < mCheckedItems.size(); i++) {
final boolean checked = mCheckedItems.valueAt(i);
if (checked) {
selected.add(mCheckedItems.keyAt(i));
}
}
Log.e("Checked Array = ", String.valueOf(selected));
SharedPreferences prefs = v1.getContext().getSharedPreferences("my_prefs", Context.MODE_PRIVATE);
SharedPreferences.Editor edit = prefs.edit();
edit.putString("Checkbox", String.valueOf(selected));
edit.commit();
Log.e("Shared Preference = ", String.valueOf(edit));
}
});
}