当用户退出应用程序并返回时,如何在Recyclerview中设置复选框?(Android Java)
我目前正在使用SharedReferences键、值对来保存状态,但似乎无法读取prefs文件并选中复选框 我已经写了这个自我解释的代码。但是,行列表.FindViewWholderForAdapterPositionI.itemView.performClick;中会抛出NullPointerException;。我只是想知道如何将Recyclerview列表中的复选框设置为选中并保存该状态。请帮忙当用户退出应用程序并返回时,如何在Recyclerview中设置复选框?(Android Java),java,android,android-recyclerview,sharedpreferences,android-checkbox,Java,Android,Android Recyclerview,Sharedpreferences,Android Checkbox,我目前正在使用SharedReferences键、值对来保存状态,但似乎无法读取prefs文件并选中复选框 我已经写了这个自我解释的代码。但是,行列表.FindViewWholderForAdapterPositionI.itemView.performClick;中会抛出NullPointerException;。我只是想知道如何将Recyclerview列表中的复选框设置为选中并保存该状态。请帮忙 btnGetSelected.setOnClickListener(new View.OnCl
btnGetSelected.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
StringBuilder stringBuilder = new StringBuilder();
for (Number number : numbers) {
if (number.isSelected()) {
if (stringBuilder.length() > 0)
stringBuilder.append(", ");
stringBuilder.append(number.getTextONEs());
Log.e("Checked", "here");
setPreference(getApplicationContext(), "1", number.getONEs());
} else {
Log.e("Not checked", "here");
setPreference(getApplicationContext(), "0", number.getONEs());
}
}
}
});
try {
for (int i = 0; i < tocArray.length; i++) {
String value = getPreference(getApplicationContext(),Integer.toString(i));
if (value.equalsIgnoreCase("1")) {
list.findViewHolderForAdapterPosition(i).itemView.performClick();
} else {
//Do Nothing
}
}
} catch (Exception e) {
e.printStackTrace();
}
你也能解释一下recyclerview和cards的整个概念以及为什么需要持卡人吗?谢谢请帮忙!
请尝试将以下方法添加到您的活动中:
private void restoreSelectedPositions(){
SharedPreferences preferences = getSharedPreferences("selected_pos", MODE_PRIVATE);
int tmpTotal = preferences.getInt("total_pos", 0);
if(tmpTotal == numbers.size()){
for(int i=0; i<tmpTotal; i++{
boolean tmpFlag = preferences.getBoolean("pos" + i, false);
numbers.get(i).setSelected(tmpFlag);
}
}else{
// Saved data size not match with existing data.
}
}
private void saveSelectedPositions(){
SharedPreferences preferences = getSharedPreferences("selected_pos", MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.clear();
editor.putInt("total_pos", numbers.size());
for(int i=0; i<numbers.size(); i++){
editor.putBoolean("pos" + i, numbers.get(i).isSelected());
}
editor.commit();
}
@Override
protected void onResume() {
super.onResume();
restoreSelectedPositions();
// Change the line below.
Your RecyclerViewAdapter.notifyDataSetChanged();
}
当您需要保存时,只需拨打saveSelectedPositions。希望这有帮助 数字在哪里?这不重要。它使用代码中显示的方法返回字符串。我的问题是,如何保存这些框的状态,并在用户返回活动时检查它们。为什么要进行向下投票?这是一个非常好的问题,在StackOverflow上找不到解决方案。
@Override
protected void onResume() {
super.onResume();
restoreSelectedPositions();
// Change the line below.
Your RecyclerViewAdapter.notifyDataSetChanged();
}