如果 arraylist 为空,如何保存到 shredpreferences?

每次我的 Android 应用程序启动时,我都会从我的服务器获得一个arraylist, MatchingArrayList:


        try {

          JSONArray Object = new JSONArray(MatchingAsString);

          //for every object in the Array

          for (int x = 0; x < Object.length(); x++) {

            final JSONObject obj = Object.getJSONObject(x);

            MatchingArrayList.add(obj.getString("usernameMatch"));

            }

它看起来像这样:[+111, +222]


然后我像arraylist这样保存sharedpreferences:


            SharedPreferences sharedPreferencesMAL = PreferenceManager.getDefaultSharedPreferences(getApplication());

            SharedPreferences.Editor editorMAL = sharedPreferencesMAL.edit();

            Gson gsonMAL = new Gson();

            String jsonMAL = gsonMAL.toJson(MatchingArrayList);

            editorMAL.putString("MatchingArrayList", jsonMAL);

            editorMAL.commit();

所以下次使用该应用时,如果MatchingArrayList已更改为[+111, +222, +333],例如,它将覆盖上次使用arraylist的[+111, +222]


它运行良好,除非MatchingArrayList是null或为空。sharedpreferences不更新。我试过了:


          if (MatchingArrayList == null) {


            SharedPreferences sharedPreferencesMAL = PreferenceManager.getDefaultSharedPreferences(getApplication());

            SharedPreferences.Editor editorMAL = sharedPreferencesMAL.edit();

            editorMAL.putString("MatchingArrayList", null);

            editorMAL.commit();

          } else {


            //save MatchingArrayList into sharedpreferences so we can use it elsewhere

            SharedPreferences sharedPreferencesMAL = PreferenceManager.getDefaultSharedPreferences(getApplication());

            SharedPreferences.Editor editorMAL = sharedPreferencesMAL.edit();

            Gson gsonMAL = new Gson();

            String jsonMAL = gsonMAL.toJson(MatchingArrayList);

            editorMAL.putString("MatchingArrayList", jsonMAL);

            editorMAL.commit();


          }


  But still the last arraylist is being used. How can I fix this?


慕婉清6462132
浏览 77回答 1
1回答

慕运维8079593

我没有查看我的 java,arraylist而是检查了我的应用程序一侧response是否为空。php像这样:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (response.isEmpty()) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SharedPreferences sharedPreferencesMatchingContactsAsArrayList = PreferenceManager.getDefaultSharedPreferences(getApplication());&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SharedPreferences.Editor editorMatchingContactsAsArrayList = sharedPreferencesMatchingContactsAsArrayList.edit();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; editorMatchingContactsAsArrayList.putString("MatchingContactsAsArrayList", "");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; editorMatchingContactsAsArrayList.commit();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else {这解决了我的问题,更新了sharedpreferences.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java