如何在自定义复选框数组中使用 sharedPreferences?
How can I use sharedPreferences in an Array of custom checkbox?
我对复选框和 sharedPreferences 有疑问。我想要做的是:我有一个动态数据列表,每行都有一个复选框。我有一种方法可以让我只启用一个复选框并禁用所有其余的复选框。
我的问题是我想存储我在首选项中选择的复选框。当用户返回此屏幕时必须具有相同的启用复选框。
我正在尝试在方法内部使用 SharedPreferences,但它不起作用,或者有其他更容易做到这一点的方法...
提前致谢。
protected CheckBox checkBox;
private ArrayList<CheckBox> mCheckBoxes = new ArrayList<CheckBox>();
protected void addView(final listJson ljson){
.
.
.
.
.
checkBox = (CheckBox) row.findViewById(R.id.checkBox);
SharedPreferences prefs = getPreferences(MODE_PRIVATE);
String restoredText = prefs.getString(PREF_CHECKBOX_SELECT, null);
checkBox.setChecked(prefs.getBoolean(restoredText, false));
mCheckBoxes.add(checkBox);
checkBox.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
if (((CheckBox)view).isChecked())
{
for (int i = 0; i < mCheckBoxes.size(); i++) {
if (mCheckBoxes.get(i) == view){
selected_position = i;
SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();
edit.putInt(PREF_CHECKBOX_SELECT, selected_position);
edit.commit();
Toast.makeText(getApplicationContext(), greetings.Name, Toast.LENGTH_SHORT).show();
}else{
mCheckBoxes.get(i).setChecked(false);
}
}
}
else
{
selected_position=-1;
}
}
});
}
我找到了解决方案:
1) 添加标签
checkBox.setTag(myStringToSet);
2) 获取此标签
if(checkBox.getTag().equals(yourString)){
checkBox.setChecked(true);
}
我对复选框和 sharedPreferences 有疑问。我想要做的是:我有一个动态数据列表,每行都有一个复选框。我有一种方法可以让我只启用一个复选框并禁用所有其余的复选框。
我的问题是我想存储我在首选项中选择的复选框。当用户返回此屏幕时必须具有相同的启用复选框。
我正在尝试在方法内部使用 SharedPreferences,但它不起作用,或者有其他更容易做到这一点的方法...
提前致谢。
protected CheckBox checkBox;
private ArrayList<CheckBox> mCheckBoxes = new ArrayList<CheckBox>();
protected void addView(final listJson ljson){
.
.
.
.
.
checkBox = (CheckBox) row.findViewById(R.id.checkBox);
SharedPreferences prefs = getPreferences(MODE_PRIVATE);
String restoredText = prefs.getString(PREF_CHECKBOX_SELECT, null);
checkBox.setChecked(prefs.getBoolean(restoredText, false));
mCheckBoxes.add(checkBox);
checkBox.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
if (((CheckBox)view).isChecked())
{
for (int i = 0; i < mCheckBoxes.size(); i++) {
if (mCheckBoxes.get(i) == view){
selected_position = i;
SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();
edit.putInt(PREF_CHECKBOX_SELECT, selected_position);
edit.commit();
Toast.makeText(getApplicationContext(), greetings.Name, Toast.LENGTH_SHORT).show();
}else{
mCheckBoxes.get(i).setChecked(false);
}
}
}
else
{
selected_position=-1;
}
}
});
}
我找到了解决方案:
1) 添加标签
checkBox.setTag(myStringToSet);
2) 获取此标签
if(checkBox.getTag().equals(yourString)){
checkBox.setChecked(true);
}