我有含有在从JSON对象取出物品一个ListActivity。 当用户单击某个项目时,每个项目都会在DetailActivity类中显示其详细信息和属性。SharedPreferences一定项目从ListActivity
所以我有一个活动,从ListActivity显示所选项目的属性。 在DetailActivity类中有一个复选框,用来标记Item为'Favorite'。因此,每当DetailActivity中的CheckBox被选中时,当用户再次打开该Item的DetailActivity时,总是检查CheckBox的状态。
我工作迄今已通过把布尔通过SharedPreferences。但是我的方法只保存DetailActivity类的状态,而不管哪个Item被检查为收藏。所以它不保存某个项目的状态,只保存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(){
}
谢谢你的回答。我看到了全局,但我有点迷失了细节。你能通过在我的代码上面提供更改来帮助我回答我的问题吗?那太好了。 Thx – hectichavana
啊我知道了,只是用'名字'(视频位置)改变了所有的'钥匙'。谢谢! – hectichavana