0

我想在pref中添加选中的复选框,当用户关闭应用程序时,pref将清除,但是当我打开该应用程序时,我得到所有选中的复选框,甚至pref不起作用,下面是我的代码如何在pref中添加选中的复选框

public class MainActivity extends AppCompatActivity { 
    //http://androidopentutorials.com/android-how-to-store-list-of-values-in-sharedpreferences/ 

    private ListView lvData; 
    private ArrayList<ModelUser> modelUsers; 
    private ArrayList<ModelUser> modelUserArrayList; 
    private ModelUser modelUser; 
    private PrefsManager prefsManager; 
    private ProgressDialog pDialog; 
    private String url=""; 
    private MyCustomAdapter mAdapter; 

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

     pDialog = new ProgressDialog(this); 
     // Showing progress dialog before making http request 
     pDialog.setMessage("Loading..."); 
     pDialog.show(); 
     lvData = (ListView)findViewById(R.id.lvData); 

     Loaddatas(); 


    } 


    private void Loaddatas() { 

     showpDialog(); 
     JsonArrayRequest req = new JsonArrayRequest(url, 
       new Response.Listener<JSONArray>() { 
        @Override 
        public void onResponse(JSONArray response) { 
         Log.d("ress", response.toString()); 


         // Parsing json 
         for (int i = 0; i < response.length(); i++) { 
          try { 

           JSONObject obj = response.getJSONObject(i); 

           String heder=obj.getString("filterName"); 

           System.out.println("Hader"+heder); 

           JSONArray details=obj.getJSONArray("getParam"); 
           modelUsers = new ArrayList<>(); 
           modelUserArrayList =new ArrayList<ModelUser>(); 
           for(int j=0;j<details.length();j++) 
           { 

            JSONObject det=details.getJSONObject(j); 
            modelUser = new ModelUser(); 

            modelUser.setUserName(det.getString("paramName")); 
            // modelUser.setSelected(false); 
            // modelUser.setId(i); 

            modelUsers.add(modelUser); 


           } 

           mAdapter = new MyCustomAdapter(MainActivity.this,modelUsers); 
           lvData.setAdapter(mAdapter); 
           prefsManager = new PrefsManager(); 

           modelUserArrayList = prefsManager.getFavorites(MainActivity.this); 
           if(modelUserArrayList != null) { 

            for (int k = 0; k < modelUserArrayList.size(); k++) { 

             Log.e("User Name ",""+modelUserArrayList.get(k).getUserName()); 
             Log.e("User SElected ",""+modelUserArrayList.get(k).isSelected()); 
             // Log.e("User user Id ",""+modelUserArrayList.get(j).getId()); 
            } 
           } 


          } catch (JSONException e) { 
           e.printStackTrace(); 
          } 

         } 



         hidepDialog(); 

        } 
       }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       VolleyLog.d("ErrorVolley", "Error: " + error.getMessage()); 
       Toast.makeText(getApplicationContext(), 
         error.getMessage(), Toast.LENGTH_SHORT).show(); 
       hidepDialog(); 

      } 
     }); 

     MyApplication.getInstance().addToReqQueue(req, "jreq"); 
    } 


    private void showpDialog() { 
     if (!pDialog.isShowing()) 
      pDialog.show(); 
    } 

    private void hidepDialog() { 
     if (pDialog.isShowing()) 
      pDialog.dismiss(); 
    } 

} 
+0

共享偏好不明确时,应用程序关闭其清晰的,只有当你从设置该应用程序卸载或cleardata。 –

+0

确定但现在我无法存储数据 – rosy

+0

仍然卡在那里? –

回答

1

尝试这一点,把选项的部分:

SharedPreferences pref; 
SharedPreferences.Editor editor; 

//initialize 
pref = PreferenceManager.getDefaultSharedPreferences(context); 
editor = pref.edit(); 

//get value 
String var = pref.getString("any_tag_name", "default_return_value"); 

//put value 
editor.putString("any_tag_name", "value"); 
editor.commit(); 
+0

正如你所看到的,我用prefmanager尝试过,不知何故,我能够管理,但仍然有一件事情无法做到,你能帮助 – rosy

+0

确定,它是什么? – rmanalo

+0

现在我能够将选定的值存储在pref中,如果我再次打开我的应用程序,选定的值保持与pref相同,直到这里工作正常,现在我想要的是如果用户关闭应用程序并再次打开它,那么选定的值应该是明确的 – rosy

0
public static void setPreference(String name, String value) { 
    SharedPreferences.Editor editor = getSharedPreferences(PREFS_NAME, 0).edit(); 
    editor.putString(name, value); 
    editor.apply(); 
} 

和使用适用于地方犯的,因为应用更快

得到它使用

public static String getPreference(String name, String defaultValue) { 
    return getSharedPreferences(PREFS_NAME, 0).getString(name, defaultValue); 
} 
相关问题