我只是在学习android studio。
然后,我想在列表视图中保存我的列表项
仅使用共享偏好。
我成功添加并保存了项目。
但它只能保存一行!
然后我输入任何键。它只是在添加项目之前更改密钥。
那么,如何添加列表并保存? !请帮帮我
enter code here
// listview save sharedpreference
private void savePreferences () {
String ten = editTen.getText().toString();
String sdt = editSDT.getText().toString();
SharedPreferences pref = getSharedPreferences("pref", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.putString("list1", ten);
editor.putString("list2", sdt);
editor.commit();
}
//加载共享偏好
private void getPreferences() {
SharedPreferences pref = getSharedPreferences("pref", Context.MODE_PRIVATE);
String date = pref.getString("list1", null);
String name = pref.getString("list2", null);
arrSinhVien = new ArrayList<SinhVien>();
arrSinhVien.add(new SinhVien(R.drawable.luan, date, name));
myadapter = new CustomAdapter(this, R.layout.activity_diary_item, arrSinhVien);
}
答案 0 :(得分:1)
共享首选项不用于保存项目列表,它只是键值对数据结构,用于保存应用程序的少量数据。
在您的代码段中,您用新的数据覆盖以前的数据。
但是如果你想保存列表数据,我建议使用JSON数组并将该数组放入共享首选项中。
该守则如下。
Object.keys(Array).forEach(key => {
console.log('key',key)
})
&#13;
JSONArray jsArr=new JSONArray();
JSONObject jsObj=new JSONObject();
jsObj.putString("ten",editTen.getText().toString());
jsObj.putString("sdt",editSDT.getText().toString());
//Add this object to your JSONArray
jsArr.add(jsObj);
//Serialize your Json Array and save to shared preferences.
savePreferences(jsArr);
使用如下
private void savePreferences (JSONArray jsArr) {
SharedPreferences pref = getSharedPreferences("pref", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.putString("list", jsArr.toString());
editor.commit();
}
希望这会对你有帮助..