2017-09-06 2 views
0

ich bin neu mit android. Ich arbeite Json mit geteilten Präferenzen. Von der JSON erhalte ich die Daten und speichere sie in den gemeinsamen Einstellungen und es funktioniert gut. Ich möchte die Shared-Preference-Array-Daten String in SharedPreferences zuweisen.shared preference array daten speichern in emptty array in android

Dies ist der Code:

 private ArrayList<String>urls2 = new ArrayList<>(); 
     private ArrayList<String>urls1 = new ArrayList<>(); 

     this is the json parse 
      if (errorCode == 0) { 
         email = p.getString("email"); 
         firstName = p.getString("firstName"); 
         lastName = p.getString("lastName"); 
         phone = p.getString("phone"); 
         status = p.getString("status"); 
         updatedDate = p.getString("updatedDate"); 
         serverURL = p.getString("url"); 
         urls1.add(p.getString("url")); 

     //     urls1.append(","); 
         Log.d("URL", "" + urls1); 
         urls2.add(p.getString("staffId"))     urls2.append(","); 
         Log.d("STAFFID", "" + urls2); 

     } 
SharedPreferences: 

     SharedPreferences.Editor editor = getSharedPreferences("LOGINACTIVITY", 0).edit(); 


          for(int i=0;i<urls2.size();i++) { 
           editor.putString("staffId1" + i, urls2.get(i)); 
           Log.d("staffId1",urls2.get(i).toString()); 
          } 

          for(int i=0;i<urls1.size();i++) { 
           editor.putString("serverURL" + i, urls1.get(i)); 
           Log.d("SavedURl",urls1.get(i).toString()); 



         } 

in next view controller i want assing the shared preference array data string 

     like ex : firsturl = arrayshared[0] 

        secondurl = arrayshared[1] 

      this is next view controller 

      ArrayList<String> staffdata = new ArrayList<String>(); 

        int listsize = mPrefsManager.getInt("staffId1", 0); 

        Log.d("firstcall of<<<<<<<",""+listsize); 

        for(int i=0; i<=listsize; i++) { 

         if(listsize == 0) 
         { 

         Hear : first shared preference array first element data 

          like ex : firsturl = arrayshared[0] 

          Log.d("firstcall of<<<<<<<",""+listsize); 
          firsturl = .get(i).toString() 

         } 
         else 
         { 

         like : secondurl = arrayshared[1] 
         ===> hear second url data 
          Log.d("second irst<<<",""+listsize); 
         } 

wie

die Daten aus der gemeinsamen Vorliebe Array String erhalten
+0

Sie 'editor.commit hinzuzufügen vergessen haben (); ohne commit wird es keine Daten speichern –

+0

ich tat das, aber mein Problem ist Sharedreference Array-Daten zu String –

+2

"pls helfen mir" Sie müssen älter als 13 sein, um auf dieser Website teilnehmen. Wenn Sie sind, verhalten Sie sich wie folgt: –

Antwort

0

der richtige Weg Gemeinsam genutzte Einstellungen zu verwenden (https://developer.android.com/training/basics/data-storage/shared-preferences.html#ReadSharedPreference) ist:

  1. In gemeinsame Einstellungen schreiben:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); SharedPreferences.Editor editor = sharedPref.edit(); editor.putString("Your Key name", yourString); editor.commit();

  1. von Gemeinschafts-Einstellungen zu lesen:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); String defaultValue = "default String"; String mString = sharedPref.getString("Your Key name", defaultValue);

So:

Schritt 1: wir haben den Wert von yourString innerhalb der gespeicherten Präferenz, die den Schlüsselruf hat "Your Key name";

Schritt 2: Wir haben die Präferenz gelesen und speichern seinen Wert innerhalb der mString Variable.

So können Sie einfach eine Schleife verwenden, um die Strings innerhalb Ihrer Arraylist zu speichern (alle Elemente Ihrer Liste müssen einen anderen Schlüssel haben) und eine andere Schleife verwenden, um die Präferenz zu lesen und jede Präferenz in eine andere Liste hinzuzufügen.

Für eine bessere Verwendung vergessen Sie nicht, die Länge der ArrayList in den Einstellungen zu speichern.

Zum Beispiel eine Arraylist von String in SharedPreferences zu schreiben:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = sharedPref.edit(); 
editor.putInt("lengtArrayList", lengtOfTheArrayList); 
for (int i = 0; i < lengtOfTheArrayList; i++) { 
    editor.putString("Your Key name" + i, yourArrayList.get(i)); 
} 
editor.commit(); 

in einem anderen Arraylist zu lesen und zu speichern:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); 
int size = sharedPref.getInt("lengtArrayList", 0); 
String defaultValue = "default String"; 
for (int i = 0; i < size; i++) { 
    String mString = sharedPref.getString("Your Key name" + i, defaultValue); 
    mArrayList.add(mString); 
}; 

Ich hoffe, dass es Ihnen helfen kann: D

Viel Glück !!

Für diesen Code-Schnipsel in ein neues Projekt Beispiel versuchen, die logcat sehen:

public class MainActivity erweitert AppCompatActivity {

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

    ArrayList<String> arrayList1 = new ArrayList<String>(); 
    arrayList1.add("ciao"); 
    arrayList1.add("come"); 
    arrayList1.add("stai"); 

    SharedPreferences sharedPref = this.getPreferences(Context.MODE_PRIVATE); 
    SharedPreferences.Editor editor = sharedPref.edit(); 
    editor.putInt("lengtArrayList", arrayList1.size()); 
    for (int i = 0; i < arrayList1.size(); i++) { 
     editor.putString("p" + i, arrayList1.get(i)); 
    } 
    editor.commit(); 

    ArrayList<String> arrayList2 = new ArrayList<String>(); 
    int size = sharedPref.getInt("lengtArrayList", 0); 
    String defaultValue = "default String"; 
    for (int i = 0; i < size; i++) { 
     String mString = sharedPref.getString("p" + i, defaultValue); 
     Log.v("Preference = ", mString); 
     arrayList2.add(mString); 
     Log.v("Array = ", arrayList2.get(i)); 
    }; 
} 

}

+0

int size = mPrefsManager.getInt ("staffId1", 0); String defaultValue = "Standard String"; für (int i = 0; i <= size; i ++) { // Zeichenfolge mString = mPrefsManager.getString ("s", i, "defatu"); String mString = mPrefsManager.getString ("staffId1" + i, defaultValue); Daten.add (mString); Log.d ("Daten addes hea von <<<<<", "" + Daten); } Wenn ich versuchen kann, die NULL-Werte zu erhalten –

+0

String mString = mPrefsManager.getString ("staffId1" + i, defaultValue); Ich möchte die statistid dort –

+0

Mit meiner Methode erstellen Sie x Präferenzen. Jede Präferenz hat den Schlüssel = "Ihr Schlüsselname" + i. – moamsi

Verwandte Themen