ListView 内のチェックボックスの結果を実際に永続化する方法を説明する単一の記事がどこにも見つかりません。表示方法はたくさんありますが、保存方法はすべて省略されています。
メニュー項目から [お気に入りの設定] をクリックすると、名前のリストを読み込み、それぞれにチェックボックスを表示したいと考えています。複数の「チェック」を実行できるようにしたいのですが、リストを何らかの形式で、チェック済みの設定で、できれば SD カードに永続的なストレージに保存できるようにしたいと考えています。リストには、「name」の値と「isChecked」の値が含まれている必要があります。
私の問題は、構文ではなく構造と範囲の 1 つであると思うので、すべてのコードではなく、構造のみを以下に示します。
メイン メニュー アクティビティで、リスト (checkedlist) をカスタム アダプターに渡します。
public class SetFavourites extends ListActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
.
.
FavouritesAdapter adapter = new FavouritesAdapter(this, checkedList);
setListAdapter(adapter);
}
アダプターには onCheckedChangeListener があるため、チェックボックスが変更されるたびに、//Here's where I'm Stuck と書いた時点で、その行の名前とチェック値が表示されます。
public class FavouritesAdapter extends ArrayAdapter<JSONObject> implements OnCheckedChangeListener {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
}
@Override
public void onCheckedChanged(CompoundButton cb, boolean isChecked) {
JSONObject checked = getItem(posSelected);
// Here's where I'm stuck
}
}
だから私の質問は、複数のチェックイベントがある場合、どうすればデータを永続化できますか?
行名とそのチェック済みステータスを保持するモデルを作成する場合、そのモデルをアクティビティから、またはアダプタ内からどこでインスタンス化しますか?
アダプタ内の場合、「チェック」がいつ完了したかを知らせるイベントがないため、モデルに追加することはできますが、保存することはできません。
アダプタがモデルをインスタンス化する場合、メイン アクティビティはどのようにそれを保存できますか? データの保存を完了するために使用できるイベントは何ですか? 戻るボタン メソッド (メイン アクティビティ内で定義されているため、アダプタ内で動作できない)、または Activity onStop() メソッドも同様です。
アクティビティでデータ モデルをインスタンス化して渡すと、どのようにして再度渡されて保存されますか?
ご覧のとおり、私はこれにアプローチする方法に完全に混乱しています。
ありがとう