Java convertit ArrayList en chaîne et retourne à ArrayList?

Je voulais sauvegarder un ArrayList vers SharedPreferences, donc je dois le transformer en chaîne et en arrière, c'est ce que je fais.

// Save to shared preferences SharedPreferences sharedPref = this.getPreferences(Activity.MODE_PRIVATE); SharedPreferences.Editor editor = this.getPreferences(Activity.MODE_PRIVATE).edit(); editor.putString("myAppsArr", myAppsArr.toString()); editor.commit(); 

Je peux le récupérer avec String arrayString = sharedPref.getString("yourKey", null); Mais je ne sais pas comment convertir arrayString dans une ArrayList. Comment ceci peut être fait?

  • Comment empêcher la date passée sélectionnée dans DatePickerDialog (setMinDate ne fonctionne pas comme prévu)
  • Utilisation correcte de Classloader (en particulier dans Android)
  • Android ListView avec la pagination se bloque
  • Comment configurer l'icône à côté du texte dans la tabulation
  • Comment modifier le thème de AlertDialog
  • Android: le premier plan ne s'affichera pas correctement

  • Mon tableau ressemble à quelque chose comme:

     [item1,item2,item3] 

  • Comment résoudre ceci sur Android Studio 3.0 Canary 1: Impossible de résoudre: com.google.android:android:2.3.1
  • La détection de visages ne fonctionne pas pour la caméra frontale
  • Lien dynamique Firebase n'ouvrant pas l'application
  • Le bouton OK dans la boîte de dialogue "Créer un nouveau périphérique virtuel Android (AVD)" ne fait rien
  • Préférence AndroidPrix d'écran en deux lignes
  • Entrées doublées dans ListView
  • 4 Solutions collect form web for “Java convertit ArrayList en chaîne et retourne à ArrayList?”

    Vous avez 2 choix:

    1. Analyser manuellement la chaîne et recréer l'arrayliste. Ce serait plutôt fastidieux.
    2. Utilisez une bibliothèque JSON comme la bibliothèque Gson de Google pour stocker et récupérer des objets en tant que cordes JSON. C'est une bibliothèque légère, bien connue et populaire. Ce serait une solution idéale dans votre cas avec un minimum de travail requis. par exemple,

       // How to store JSON string Gson gson = new Gson(); // This can be any object. Does not have to be an arraylist. String json = gson.toJson(myAppsArr); // How to retrieve your Java object back from the string Gson gson = new Gson(); DataObject obj = gson.fromJson(arrayString, ArrayList.class); 

    Essaye ça

     ArrayList<String> array = Arrays.asList(arrayString.split(",")) 

    Cela fonctionnera si la virgule est utilisée comme séparateur et aucun des éléments ne l'a fait.

    J'ai fini par utiliser:

     ArrayList<String> appList = new ArrayList<String>(Arrays.asList(appsString.split("\\s*,\\s*"))); 

    Cela ne fonctionne pas pour tous les types de tableau. Cette option diffère de:

     ArrayList<String> array = Arrays.asList(arrayString.split(",")); 

    En ce sens que la deuxième option crée un tableau inaccessible.

    La page http://mjiayou.com/2015/07/22/exception-gson-internal-cannot-be-cast-to/ contient les éléments suivants:

     Type type = new TypeToken<List<T>>(){}.getType(); List<T> list = gson.fromJson(jsonString, type) 

    Peut-être sera-t-il utile.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.