単一選択モードのラジオボタンを含むレイアウトによって設定されるカスタム 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);
私の質問は、リストがデータベースから以前に更新された場合に、ラジオ ボタンの状態をどのように保存するかです。これで十分でない場合は、さらにコードを指定できます。