加载保存为json的每个对象

时间:2017-06-06 01:58:08

标签: android json

我将播放列表保存为json文件,但是oncreate我想加载已保存的每个播放列表。

这是我的保存功能;

void Kaydet(PLAYLIST liste_mp3)
{

    SharedPreferences appSharedPrefs = PreferenceManager
            .getDefaultSharedPreferences(this.getApplicationContext());
    SharedPreferences.Editor prefsEditor = appSharedPrefs.edit();
    Gson gson = new Gson();
    String json = gson.toJson(liste_mp3);
    prefsEditor.putString(liste_mp3.ad, json);
    prefsEditor.commit();
}

这是PLAYLIST类,

public class PLAYLIST
    {
        public String ad;
        public ArrayList<MP3> liste;

        public PLAYLIST(String ad1,ArrayList<MP3> liste1)
        {
            ad = ad1;
            liste = liste1;
        }
        public String toString()
        {
            return ad;
        }
        public ArrayList<MP3> LISTE()
        {
            return liste;
        }
    }

这是我加载特定的一个;

if(Yukle("A liste") != null) {
        playlist.add(Yukle("A liste"));
    } else { playlist.add(new PLAYLIST("A liste",a_liste)); }

这是加载功能,

PLAYLIST Yukle(String playlist_name)
{
    SharedPreferences appSharedPrefs = PreferenceManager
            .getDefaultSharedPreferences(this.getApplicationContext());
    Gson gson = new Gson();
    String json = appSharedPrefs.getString(playlist_name, "");
    PLAYLIST p = gson.fromJson(json, PLAYLIST.class);
    return p;
}

1 个答案:

答案 0 :(得分:0)

我用这个想法解决了我的问题,我创建了一个新函数,将所有播放列表的名称保存为字符串arraylist,然后加载播放列表名称的字符串arraylist然后制作for循环并加载每个播放列表的名称。

这是在onCreate()

ArrayList<String> yukleniyor = YukleHepsi();
        if(yukleniyor != null) {
            for (String isimler : yukleniyor) {
               playlist.add(Yukle(isimler));
            }
        }

此函数加载名称:

ArrayList<String> YukleHepsi()
    {
        SharedPreferences appSharedPrefs = PreferenceManager
                .getDefaultSharedPreferences(this.getApplicationContext());
        Gson gson = new Gson();
        String json = appSharedPrefs.getString("isimler", "");
        ArrayList<String> p = gson.fromJson(json, ArrayList.class);
        return p;
    }

此功能保存所有播放列表的名称,

void KaydetHepsi()
    {
        ArrayList<String> isimler = new ArrayList<String>();
        for(PLAYLIST p: playlist)
        {
            if(p.ad != "None") {
                isimler.add(p.ad);
            }
        }
        SharedPreferences appSharedPrefs = PreferenceManager
                .getDefaultSharedPreferences(this.getApplicationContext());
        SharedPreferences.Editor prefsEditor = appSharedPrefs.edit();
        Gson gson = new Gson();
        String json = gson.toJson(isimler);
        prefsEditor.putString("isimler", json);
        prefsEditor.commit();
    }