如何在自定义复选框数组中使用 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);
        }