0

単一選択モードのラジオボタンを含むレイアウトによって設定されるカスタム ArrayAdapter があります。ListView に追加されたアイテムを保存し、アクティビティが破棄されたときに ListView を再設定することができましたが、チェックされたラジオ ボタンはその状態を失いました。ラジオボタンをSharedPreferenceで保存することだけが見つかった解決策で、2日間オンラインで検索しました。これが私がこれまでに行ったことです。誰かが私を正しい方向に向けることができるかもしれません。ありがとう。

コード:- を使用setOnItemClickListener()してリストビューの項目とラジオ ボタンをキャプチャして保存しましたが、それが実際に正しい方法である場合、共有設定からチェックされたラジオ ボタンを再設定する方法がわかりません。

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)このために、ラジオボタンのテキストなどのすべてのラジオボタン関連データを維持するデータベースに1つのテーブルを作成する必要があります。また、データの一意のIDと、ラジオボタンの状態を保存した各行の1つのブールフラグを維持します

2)データベースからすべてのデータをarraylistに取得し、それをアダプターに設定できます。

3)そのIDに対するデータベースの更新行に従って、ユーザーがラジオボタンをクリックしたときにラジオ状態を維持するため。

于 2015-09-07T16:04:55.550 に答える