0

我有一个自定义 ArrayAdapter,它由包含单选模式单选按钮的布局填充。我设法保存添加到 ListView 的项目,并在活动被破坏但选中的单选按钮失去它的状态时重新填充 ListView。在网上搜索了两天,发现唯一的解决方案是使用 SharedPreference 保存单选按钮。这是我到目前为止所做的,也许有人可以指出我正确的方向。谢谢。

代码:-我使用setOnItemClickListener()来捕获列表视图中的项目和单选按钮以保存但无法弄清楚如何从 sharedpreference 重新填充选中的单选按钮,如果这确实是正确的方法。

OnCreate() 方法代码:-

ListView sist = (ListView) findViewById(R.id.list);
adapter = new SAdapter(this, populateArrayList());
sList.setOnItemClickListener(itemListener);
sList.setAdapter(adapter);

onItemClickListener 代码:-

   private AdapterView.OnItemClickListener itemListener = new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        for (int i= 0; i < parent.getCount(); i++) {
            view = parent.getChildAt(i);
            RadioButton s_rb = (RadioButton) view.findViewById(R.id.s_rdb);
            int checkedState = s_rb.isChecked() ? 1 : 0;
            saveState(s_rb.getId(), checkedState);
        }
    }
};

将项目添加到适配器和数据库的代码:-

InfoHelper helper = new InfoHelper(Number_et.getText().toString(),messageBody_et.getText().toString());
adapter.add(helper);
insertInfoToDB(helper);

我的问题是如何保存单选按钮的状态,因为该列表以前是从数据库更新的。如果这还不够,可以给出更多代码。

4

1 回答 1

0

1)为此,您必须在数据库中创建一个表,该表将维护所有与单选按钮相关的数据,例如单选按钮的文本,还为存储单选按钮状态的每一行维护一个唯一的数据 ID 和一个布尔标志

2)您可以将数据库中的所有数据放入arraylist并将其设置为适配器。

3)当用户根据该ID在数据库中的更新行单击单选按钮时维护radiostate。

于 2015-09-07T16:04:55.550 回答