1

J'ai un listview dans lequel je veux stocker des données spécifiques chaque fois que l'utilisateur clique sur le bouton d'ajout. Cependant, jusqu'à présent, j'ai eu peu de succès avec la mise en œuvre. Je sais que cela doit être fait en utilisant sharedpreferences et j'ai essayé d'implémenter le statut d'enregistrement des préférences partagées et le statut de restauration, mais ma liste ne fait qu'ajouter l'élément sur lequel on clique actuellement.Comment conserver ma liste après avoir quitté l'activité dans android?

package com.example.daniel.pset3_daniel_jacob; 

import android.content.SharedPreferences; 
import android.preference.PreferenceManager; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 

import java.io.Serializable; 
import java.util.ArrayList; 
import java.util.HashSet; 
import java.util.List; 
import java.util.Set; 

public class listview extends AppCompatActivity { 

    ArrayList<String> dataa; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     onRestoredPreferences(); 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_listview); 
     Bundle extras = getIntent().getExtras(); 
     String dataExtra = extras.getString("key"); 
     dataa = new ArrayList<String>(); 
     dataa.add(dataExtra); 
     ListView listView = (ListView) findViewById(R.id.listview); 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, dataa); 
     assert listView != null; 
     listView.setAdapter(adapter); 
     Savedpreferences(dataa); 


    } 

    public void Savedpreferences(List<String> dataa) { 


     SharedPreferences preferences = this.getSharedPreferences("object", 0); 
     SharedPreferences.Editor editor = preferences.edit(); 
     List<String> arraylist = new ArrayList<String>(dataa); 
     Set<String> newset = new HashSet<String>(arraylist); 
     editor.putStringSet("stringset", newset); 
     editor.commit(); 
    } 


    public void onRestoredPreferences() 
    { 
     SharedPreferences preferences = getApplicationContext().getSharedPreferences("object", 0); 
     Set<String> getdataback = preferences.getStringSet("stringset", null); 
     List <String> arraylist = new ArrayList<String>(getdataback); 
    } 

} 

J'espère que quelqu'un peut me aider à me dire ce que je fais mal

+0

Si vous voulez enregistrer pour une utilisation ultérieure il est bon d'enregistrer dans SharedPreference Ou écrire dans le fichier comme newLine() –

Répondre

0

essayez le code ci-dessous et laissez-moi savoir si des problèmes.

public class ListviewActivity extends AppCompatActivity { 

     ArrayList<String> dataa; 

     List <String> arraylist = new ArrayList<>(); 
     @Override 
     protected void onCreate(Bundle savedInstanceState) { 

      onRestoredPreferences(); 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_listview); 
      Bundle extras = getIntent().getExtras(); 
      String dataExtra = extras.getString("key"); 
      dataa = new ArrayList<String>(); 
      dataa.addAll(arraylist); 
      dataa.add(dataExtra); 
      ListView listView = (ListView) findViewById(R.id.listview); 
      ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, dataa); 
      assert listView != null; 
      listView.setAdapter(adapter); 
      Savedpreferences(dataa); 


     } 

     public void Savedpreferences(List<String> dataa) { 


      SharedPreferences preferences = this.getSharedPreferences("object", 0); 
      SharedPreferences.Editor editor = preferences.edit(); 
      List<String> arraylist = new ArrayList<String>(dataa); 
      Set<String> newset = new HashSet<String>(arraylist); 
      editor.putStringSet("stringset", newset); 
      editor.commit(); 
     } 


     public void onRestoredPreferences() 
     { 
      SharedPreferences preferences = getApplicationContext().getSharedPreferences("object", 0); 
      Set<String> getdataback = preferences.getStringSet("stringset", null); 
      arraylist.clear(); 
      arraylist.addAll(getdataback); 
     } 

    } 
+0

Vous savez que '' onRestoreInstanceState' et onSaveInstanceState' sont des méthodes disponibles à cet effet exact, droit ? –

+0

Oui je sais mais je ne veux pas compliquer la réponse s'il n'est pas au courant. – RaghavPai

+0

J'ai utilisé sa propre logique pour résoudre son problème – RaghavPai