如何使用共享首选项在listview中保存项目

时间:2017-12-13 12:58:44

标签: java android listview

我只是在学习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);

    }

1 个答案:

答案 0 :(得分:1)

共享首选项不用于保存项目列表,它只是键值对数据结构,用于保存应用程序的少量数据。
在您的代码段中,您用新的数据覆盖以前的数据。
但是如果你想保存列表数据,我建议使用JSON数组并将该数组放入共享首选项中。
该守则如下。

&#13;
&#13;
Object.keys(Array).forEach(key => {

 console.log('key',key)

})
&#13;
&#13;
&#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();
}

希望这会对你有帮助..