如何将json对象存储为共享首选项? [英] How to store json object to shared preferences?

查看:85
本文介绍了如何将json对象存储为共享首选项?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在创建一个应用程序,在我的应用程序中,我得到响应并将其放置在自定义警报对话框中,直到在这里它可以正常工作,现在我想做的是,如果用户一次从警报对话框中选择了一个项目,它应该优先存储它,这样就不必每次都获取数据.

I am creating an application,In my app I am getting response and displaing it in custom alert dialog, Till here it works fine, Now what I am trying to do is if user selects an item from alert dialog once, it should store it in preference so that no need of fetch the data every time.

以下是我的代码段.

我得到的以下答复是:

    {
    "states": [
        {
            "id": "1",
            "state_slug": "agra",
            "statename": "Agra"
        },
        {
            "id": "2",
            "state_slug": "andaman_and_nicobar_islands",
            "statename": "Andaman and Nicobar Islands"
        },
        {
            "id": "3",
            "state_slug": "andhra_pradesh",
            "statename": "Andhra Pradesh"
        },
        {
            "id": "4",
            "state_slug": "arunachal_pradesh",
            "statename": "Arunachal Pradesh"
        },
        {
            "id": "5",
            "state_slug": "assam",
            "statename": "Assam"
        },
        {
            "id": "6",
            "state_slug": "bihar",
            "statename": "Bihar"
        },
        {
            "id": "7",
            "state_slug": "bulandshahr",
            "statename": "Bulandshahr"
        },
        {
            "id": "8",
            "state_slug": "chhattisgarh",
            "statename": "Chhattisgarh"
        },
        {
            "id": "9",
            "state_slug": "dadra_and_nagar_haveli",
            "statename": "Dadra & Nagar Haveli"
        },
        {
            "id": "10",
            "state_slug": "daman_and_diu",
            "statename": "Daman & Diu"
        },
        {
            "id": "11",
            "state_slug": "delhi",
            "statename": "Delhi"
        },
        {
            "id": "12",
            "state_slug": "farrukhabad",
            "statename": "Farrukhabad"
        },
        {
            "id": "13",
            "state_slug": "goa",
            "statename": "Goa"
        },
        {
            "id": "14",
            "state_slug": "gujarat",
            "statename": "Gujarat"
        },
        {
            "id": "15",
            "state_slug": "haryana",
            "statename": "Haryana"
        },
        {
            "id": "16",
            "state_slug": "himachal_pradesh",
            "statename": "Himachal Pradesh"
        },
        {
            "id": "17",
            "state_slug": "jammu_and_kashmir",
            "statename": "Jammu & Kashmir"
        },
        {
            "id": "18",
            "state_slug": "jharkhand",
            "statename": "Jharkhand"
        },
        {
            "id": "19",
            "state_slug": "karnataka",
            "statename": "Karnataka"
        },
        {
            "id": "20",
            "state_slug": "kerala",
            "statename": "Kerala"
        },
        {
            "id": "21",
            "state_slug": "lakshadweep",
            "statename": "Lakshadweep"
        },
        {
            "id": "22",
            "state_slug": "madhya_pradesh",
            "statename": "Madhya Pradesh"
        },
        {
            "id": "23",
            "state_slug": "maharashtra",
            "statename": "Maharashtra"
        },
        {
            "id": "24",
            "state_slug": "manipur",
            "statename": "Manipur"
        },
        {
            "id": "25",
            "state_slug": "meghalaya",
            "statename": "Meghalaya"
        },
        {
            "id": "26",
            "state_slug": "mizoram",
            "statename": "Mizoram"
        },
        {
            "id": "27",
            "state_slug": "nagaland",
            "statename": "Nagaland"
        },
        {
            "id": "28",
            "state_slug": "orissa",
            "statename": "Orissa"
        },
        {
            "id": "29",
            "state_slug": "pondicherry",
            "statename": "Pondicherry"
        },
        {
            "id": "30",
            "state_slug": "punjab",
            "statename": "Punjab"
        },
        {
            "id": "31",
            "state_slug": "purulia",
            "statename": "Purulia"
        },
        {
            "id": "32",
            "state_slug": "rajasthan",
            "statename": "Rajasthan"
        },
        {
            "id": "33",
            "state_slug": "sikkim",
            "statename": "Sikkim"
        },
        {
            "id": "34",
            "state_slug": "tamil_nadu",
            "statename": "Tamil Nadu"
        },
        {
            "id": "35",
            "state_slug": "tripura",
            "statename": "Tripura"
        },
        {
            "id": "36",
            "state_slug": "uttar_pradesh",
            "statename": "Uttar Pradesh"
        },
        {
            "id": "37",
            "state_slug": "uttarakhand",
            "statename": "Uttarakhand"
        },
        {
            "id": "38",
            "state_slug": "west_bengal",
            "statename": "West Bengal"
        }
    ]
}

我在警报对话框中显示状态名称,

I am displaying statename in my alert dialog,

class LoadAllStates extends AsyncTask<String, String, ArrayList<HashMap<String,String>>> {

          ArrayAdapter<String> adapterallstates ;
        private ProgressDialog pDialog;

            @Override
            protected void onPreExecute() {
                super.onPreExecute();
                pDialog = new ProgressDialog(MainActivity.this);
                pDialog.setMessage("Please wait..");
                pDialog.setIndeterminate(true);
               // pDialog.setIndeterminateDrawable(getResources().getDrawable(R.drawable.custom_progress));
                pDialog.setCancelable(true);
                pDialog.show();

            }
            protected ArrayList<HashMap<String,String>> doInBackground(String... args) {
                ServiceHandler sh = new ServiceHandler();

                // Making a request to url and getting response
                statedata = new ArrayList<HashMap<String, String>>();
                String jsonStr = sh.makeServiceCall(STATE_URL, ServiceHandler.GET);

                Log.d("Response: ", "> " + jsonStr);

                if (jsonStr != null) {
                    try {
                        JSONObject jsonObj = new JSONObject(jsonStr);
                        state_list = jsonObj.getJSONArray(COUNTRY_LIST);

                        // looping through All Contacts
                        for (int i = 0; i < state_list.length(); i++) {
                            JSONObject c = state_list.getJSONObject(i);

                            // creating new HashMap
                            HashMap<String, String> map = new HashMap<String, String>();

                            // adding each child node to HashMap key => value
                              map.put(STATE_SLG, c.getString(STATE_SLG));
                          map.put(STATE_ID, c.getString(STATE_ID));
                            map.put(STATE_NAME,c.getString(STATE_NAME));

                           statedata.add(map);

                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                } else {
                    Log.e("ServiceHandler", "Couldn't get any data from the url");
                }

                return statedata;
            }

            protected void onPostExecute(ArrayList<HashMap<String,String>> result) {

                super.onPostExecute(result);
               pDialog.dismiss();

                String[] arrallstates=new String[statedata.size()];
                for(int index=0;index<statedata.size();index++){
                          HashMap<String, String> map=statedata.get(index);
                      arrallstates[index]=map.get(STATE_NAME);
                 }  


                 // pass arrConuntry array to ArrayAdapter<String> constroctor :
                adapterallstates = new ArrayAdapter<String>(MainActivity.this,
                                    android.R.layout.simple_spinner_dropdown_item,
                                                                          arrallstates);
                spstate.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View w) {
                          new AlertDialog.Builder(MainActivity.this)
                          .setTitle("Select")
                          .setAdapter(adapterallstates, new DialogInterface.OnClickListener() {

                            @Override
                            public void onClick(DialogInterface dialog, int which) {

                                spstate.setText(adapterallstates.getItem(which).toString());

                                 try {

                                     String n  = state_list.getJSONObject(which).getString("state_slug");


                                    statename=state_list.getJSONObject(which).getString("state_slug");
                                    stnm=state_list.getJSONObject(which).getString(STATE_NAME);

                                     Log.d("Response statenm: ", "> " + statename);

                                     SharedPreferences.Editor editor = sharedpreferences.edit();

                                        editor.putString(States, n);
                                        editor.commit();
                                     new LoadAllStatesCity().execute();

                                    // Toast.makeText(getActivity(), statename, Toast.LENGTH_LONG).show();
                                } catch (JSONException e) {
                                    // TODO Auto-generated catch block
                                    e.printStackTrace();
                                }

                              dialog.dismiss();
                            }
                          }).create().show();
                        }
                });

            }
     }

推荐答案

如果要存储响应,更好的方法是将内容写入文件.如果只想存储某些值,则可以这样

if you want to store the response the better way is to write the content into a file.if you want to store only some values you can do like this

SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit();
 editor.putString("key_from_json", "String_value_from_json");
 editor.putInt("key_from_json","int_value_from_json");
 editor.commit();

这篇关于如何将json对象存储为共享首选项?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆