2017-01-02 5 views
0

Ich habe ein Problem, dass, wenn ich meine Arraylist in gemeinsame Einstellungen mit Json speichern und ich versuche, es wieder in meine Listview zu laden, ändert sich die Listview nicht. Ich habe viele Artikel gelesen, aber sie zeigen es jedes Mal auf die gleiche Weise. Hast du eine Idee, wo das Problem sein könnte?Gson lesen Daten von gemeinsamen Vorlieben

+0

Warum würde es ändern? Ich meine, Sie speichern und laden jedes Mal das gleiche Datum. –

+0

I das Array ist nicht modifiziert, die Liste wird offensichtlich die gleichen Daten enthalten – Manza

+0

Nun tut mir leid für die Unklarheit, ich versuche Daten zu laden, wenn Benutzer die Anwendung das nächste Mal öffnet. – sudoman281

Antwort

0

Ich reparierte es, indem ich Ergebnisse vorwarf und sie durch .add addierte.

 ArrayList<Result> results = gson.fromJson(json, type); 
     for (Result result: results) { 
      mainActivity.getResultsArray().add(result); 
     } 
     mainActivity.getAdapter().notifyDataSetChanged(); 
2

Fügen Sie diese Methode in Ihrer globalen Klasse hinzu, damit Sie diese überall verwenden können.

public static void save_ListToSharedPreferneces(Context context, ArrayList<YourModelClass> recentDataList) { 
    SharedPreferences sharedpreferences = 
      context.getSharedPreferences("recent_data", Context.MODE_PRIVATE); 
    SharedPreferences.Editor editor = sharedpreferences.edit(); 
    Gson gson = new Gson(); 

    String json = gson.toJson(recentDataList); 
    editor.putString("recentDataList", json); 
    editor.commit(); 
    } 

    public static ArrayList<YourModelClass> get_ListFromSharedPreferneces(Context context) { 

    SharedPreferences sharedPrefs = context.getSharedPreferences("recent_data", Context.MODE_PRIVATE); 
    Gson gson = new Gson(); 
    String json = sharedPrefs.getString("recentDataList", ""); 
    Type type = new TypeToken<ArrayList<YourModelClass>>() { 
    }.getType(); 

    ArrayList<YourModelClass> recentDataList= gson.fromJson(json, type); 

    return recentDataList; 
    } 

auf dem Button-Klick speichern rufen Sie einfach Methode wie folgt speichern:

Global.save_ListToSharedPreferneces(context, yourArrayList); 

auf dem Lastknopf klicken rufen Sie einfach Methode wie folgt erhalten:

ArrayList<YourModelClass> yourArrayList=new ArrayList(); 
yourArrayList = Global.save_ListToSharedPreferneces(context); 

//Now set your adapter again: 

YourAdapter yourAdapter = new YourAdapter (yourArrayList , getContext()); 
listview.setAdapter(yourAdapter);