简体   繁体   English

如何将对象的哈希图保存到共享首选项

[英]how to save hashmap of objects to shared preferences

I have a hashmap of objects .I want to save that to shared preferences and get it.我有一个对象哈希图。我想将它保存到共享首选项并获取它。 How can I do this?我怎样才能做到这一点?

Please check As i added the full code of my MainActivity.java file as follows:请检查我添加了 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
    }
}
}

And the Custom Rajdata class as follows:自定义 Rajdata 类如下:

public class Rajdata {

String namString;

public String getNamString() {
    return namString;
}

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

}

Please do something like this -请做这样的事情 -

//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();
        }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM