【问题标题】:how to save hashmap of objects to shared preferences如何将对象的哈希图保存到共享首选项
【发布时间】:2015-06-23 09:30:31
【问题描述】:

我有 objectshashmap。我想将其保存到 shared preferences 并获取它。我该怎么做?

【问题讨论】:

  • 我已经用谷歌搜索了。但是 ddnt 得到一个正确的答案。如果您知道答案,请发布。这将非常有帮助
  • 请尝试@seethalakshmi 我的答案可能对我有用
  • 请看我的回答。
  • 它在我的问题中明确提到它是对象的哈希图。我知道要保存到首选项的普通哈希图
  • 如果有人知道答案,请发帖。我很坚持

标签: android hashmap sharedpreferences


【解决方案1】:

请检查我添加了我的 MainActivity.java 文件的完整代码如下:

public class MainActivity extends ListActivity {

HashMap<String, Rajdata> map;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    map = new HashMap<String, Rajdata>();
    for (int i = 0; i < 10; i++) {

        Rajdata raj = new Rajdata();
        raj.setNamString("My Data" + i);
        map.put("MyData" + i, raj);
    }

    saveData(MainActivity.this, map);
    // Assign adapter to List

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}

public void saveData(Context context, HashMap<String, Rajdata> mlist) {
    SharedPreferences shared;
    SharedPreferences.Editor editor;

    shared = context.getSharedPreferences("MONDAY", Context.MODE_PRIVATE);
    editor = shared.edit();

    Gson gson = new Gson();
    String json = gson.toJson(mlist);
    editor.putString("mondAy", json);
    editor.commit();
    Fetchdata();
    // String getSaved = shared.getString("mondAy", null);
    /*
     * Toast.makeText(MainActivity.this, getSaved,
     * Toast.LENGTH_LONG).show();
     */

}

public void Fetchdata() {
    SharedPreferences shared;
    SharedPreferences.Editor editor;
    Gson gson = new Gson();
    shared = getSharedPreferences("MONDAY", Context.MODE_PRIVATE);
    editor = shared.edit();
    HashMap<String, Rajdata> listDayItems = gson.fromJson(
            shared.getString("mondAy", null),
            new TypeToken<HashMap<String, Rajdata>>() {
            }.getType());
    printMap(listDayItems);

}

public static void printMap(HashMap<String, Rajdata> mp) {
    Iterator it = mp.entrySet().iterator();
    while (it.hasNext()) {
        Map.Entry pair = (Map.Entry) it.next();
        System.out.println(pair.getKey() + " = "
                + ((Rajdata) pair.getValue()).getNamString().toString());
        it.remove(); // avoids a ConcurrentModificationException
    }
}
}

以及自定义Rajdata类如下:

public class Rajdata {

String namString;

public String getNamString() {
    return namString;
}

public void setNamString(String namString) {
    this.namString = namString;
}

}

【讨论】:

  • @seethalakshmi 对不起我上面的评论请看我发布的代码,请回复它是否有效。
  • @seethalakshmi 你检查过代码是否有效吗?
  • @seethalakshmi 在我为您的问题工作了半小时后尽快回复,所以请您回复我。
  • 谢谢你的回答:) 我会检查它会让你知道
  • 当我调用函数以从首选项中获取值时出现空指针异常
【解决方案2】:

请做这样的事情-

//variable for Shared preference.
        private SharedPreferences _sPrefs;
        private Editor _editorSpref = null;



        _sPrefs =getSharedPreferences("MYPREF", Context.MODE_PRIVATE);
        _editorSpref =_sPrefs.edit();


    // fetch data from HashMap
        HashMap<String, String> pairs = new HashMap<String, String>();
        Iterator myVeryOwnIterator = pairs.keySet().iterator();
        while(myVeryOwnIterator.hasNext()) {
            String key=(String)myVeryOwnIterator.next();
            String value=(String)pairs.get(key);
            _editorSpref.putString(key,value);
            _editorSpref.commit();
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-06
    • 2017-01-22
    • 2021-05-31
    • 2011-12-18
    • 2016-01-17
    • 2013-09-20
    相关资源
    最近更新 更多