Java 还原ArrayList中的复选框状态不会将复选框设置为选中状态

Java 还原ArrayList中的复选框状态不会将复选框设置为选中状态,java,android,arraylist,android-checkbox,Java,Android,Arraylist,Android Checkbox,我正在尝试恢复复选框列表的“已选中”状态,但是由于某些原因,这些复选框从未选中 我肯定我忽略了一些小东西 如有任何建议,我们将不胜感激 资料来源: @覆盖 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.profile\通知\设置\列表\新消息); pref=getApplicationContext().GetSharedReferences(

我正在尝试恢复复选框列表的“已选中”状态,但是由于某些原因,这些复选框从未选中

我肯定我忽略了一些小东西

如有任何建议,我们将不胜感激

资料来源:
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.profile\通知\设置\列表\新消息);
pref=getApplicationContext().GetSharedReferences(“PREFS”,0);
最终整数选择=pref.getInt(“chatreaposition”,0);
把(这个)绑起来;
getSupportActionBar().setTitle(“中的重复通知”);
列表=(ListView)findViewById(R.id.simpleListView);
dataAdapter=new ArrayAdapter(此,R.layout.repeat,
R.id.重复(电视、文本);
list.setAdapter(dataAdapter);
list.setChoiceMode(ListView.CHOICE\u MODE\u NONE);
如果(列表!=null&&selection!=0){
对于(int i=0;i
完整资料来源:

编辑: 下面显示的第一个“答案”并不是我想要完成的。我完全理解如何还原单个复选框的状态。我在遍历复选框列表以还原所有复选框的状态时遇到了问题(我可以在list.setOnItemClickListener中迭代列表,因为我可以获得视图-但我不确定如何在oncreate中迭代列表)


试试这个..在创建时添加复选框并初始化它

cb1 = (CheckBox) findViewById(R.id.yourxmlid);
然后添加共享pref以检查复选框的状态

 sharedpreferences = PreferenceManager.getDefaultSharedPreferences(this);
    editor = sharedpreferences.edit();
    boolean checkedFlag1 = sharedpreferences.getBoolean("checkboxstate", false);
    cb1.setChecked(checkedFlag1);
最后,在onCheckListener中添加一个共享pref以选中该框

 cb1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
            if (cb1.isChecked()) {

                editor.putBoolean("checkboxstate", true);
                editor.commit();


                Log.i("Checkbox ", "Activated");

            }else{

                editor.putBoolean("checkboxstate", false);
                editor.commit();
                Log.i("Checkbox: ","Deactivated");
            }
        }
    });

尝试此..在创建时添加复选框并初始化它

cb1 = (CheckBox) findViewById(R.id.yourxmlid);
然后添加共享pref以检查复选框的状态

 sharedpreferences = PreferenceManager.getDefaultSharedPreferences(this);
    editor = sharedpreferences.edit();
    boolean checkedFlag1 = sharedpreferences.getBoolean("checkboxstate", false);
    cb1.setChecked(checkedFlag1);
最后,在onCheckListener中添加一个共享pref以选中该框

 cb1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
            if (cb1.isChecked()) {

                editor.putBoolean("checkboxstate", true);
                editor.commit();


                Log.i("Checkbox ", "Activated");

            }else{

                editor.putBoolean("checkboxstate", false);
                editor.commit();
                Log.i("Checkbox: ","Deactivated");
            }
        }
    });

问题是您正在创建新的
复选框
对象,而没有对它们执行任何操作:

for (int i = 0; i < list.getCount(); i++) {        
    CheckBox cb = new CheckBox(this);
    cb.setId(i);

    if (i == selection) {
        cb.setChecked(true);
    } else {
        CheckBox cbb = new CheckBox(this);
        cbb.setChecked(false);
    }
}
您可以删除实际上什么也不做的for循环

如果要读取多个已保存的选择,则需要从数据库或文件中读取,因为首选项仅限于键/值对。但概念相同:读取选择列表,遍历列表,在列表视图上设置选中的项


希望这会有所帮助!

问题在于您正在创建新的
复选框
对象,而没有对它们执行任何操作:

for (int i = 0; i < list.getCount(); i++) {        
    CheckBox cb = new CheckBox(this);
    cb.setId(i);

    if (i == selection) {
        cb.setChecked(true);
    } else {
        CheckBox cbb = new CheckBox(this);
        cbb.setChecked(false);
    }
}
您可以删除实际上什么也不做的for循环

如果要读取多个已保存的选择,则需要从数据库或文件中读取,因为首选项仅限于键/值对。但概念相同:读取选择列表,遍历列表,在列表视图上设置选中的项


希望有帮助!

这部分代码做什么?如果(list!=null&&selection!=0){……}请将您的所有代码放在不同的代码块中。并解释有关问题的更多信息您是否验证了选择的值>0@Psypher-是的-我有-这不是问题所在所以-我编辑问题是为了更清楚-也许我不清楚我第一次到底想完成什么de do?如果(列表!=null&&selection!=0){…}请将您的所有代码放在不同的代码块中。并解释有关问题的更多信息您是否验证了选择的值>0@Psypher-是的-我有-这不是问题所在所以-我编辑了这个问题是为了更清楚-也许我不清楚我第一次到底想完成什么。这似乎会重新开始re状态为一个复选框-这不是我正在尝试做的-我正在尝试还原列表中所有复选框的状态,如下所示:这似乎会还原一个复选框的状态-这不是我正在尝试做的-我正在尝试还原列表中所有复选框的状态,如下所示: