JSON オブジェクトからフェッチされたアイテムを含む ListActivity があります。ユーザーが項目の 1 つをクリックすると、各項目の詳細と属性が DetailActivity クラス内に表示されます。
したがって、ListActivity から選択した項目の属性を表示する 1 つのアクティビティがあります。DetailActivity クラスには、項目を「お気に入り」としてマークするための CheckBox があります。そのため、DetailActivity 内の CheckBox がチェックされるたびに、ユーザーがその Item の DetailActivity を再度開いたときに、CheckBox の状態が常にチェックされます。
ここまでは、Boolean を SharedPreferences に渡すことで実装しました。しかし、私のメソッドは、お気に入りとしてチェックされている項目に関係なく、DetailActivity クラスの状態のみを保存します。したがって、特定のアイテムの状態は保存されず、DetailActivity クラスの状態のみが保存されます。
どうすればそうすることができますか?
これが私のスニペットです:
final CheckBox cb_fav = (CheckBox) findViewById(R.id.cb_tool_fav);
cb_fav.setOnClickListener(this);
boolean isChecked = getBooleanFromPreferences("isChecked");
Log.i("start",""+isChecked);
cb_fav.setChecked(isChecked);
cb_fav.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
Log.i("boolean",""+isChecked);
DetailsActivity.this.putBooleanInPreferences(isChecked,"isChecked");
}
});
}
public void putBooleanInPreferences(boolean isChecked,String key){
SharedPreferences sharedPreferences = this.getPreferences(Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean(key, isChecked);
editor.commit();
}
public boolean getBooleanFromPreferences(String key){
SharedPreferences sharedPreferences = this.getPreferences(Activity.MODE_PRIVATE);
Boolean isChecked = sharedPreferences.getBoolean(key, false);
return isChecked;
}
これは、ListActivity にフェッチするオブジェクト クラスです。これらは、DetailsActivity クラス内に表示される属性です。
public class VideoLocation {
public String deleted_at = null;
public int documentary_video_length = -1;
public int id = -1;
public double latitude = 0d;
public double longitude = 0d;
public int position = -1;
public String updated_at = null;
public String name = null;
public String text = null;
public String documentary_video_url = null;
public String documentary_thumbnail_url = null;
public String audio_text_url = null;
public Footage[] footages = null;
public VideoLocation(){
}