SORU
14 AĞUSTOS 2011, Pazar


SharedPreferences kurtarmak için ArrayList

Özel nesnelerle ArrayList var. Her özel nesne dizeleri ve sayılar içerir. İhtiyacım olan dizi için buralarda bile kullanıcı yaprakları, etkinlik ve istediği için geri daha sonraki bir zamanda, ancak ihtiyacım yok dizi kullanılabilir sonra uygulama kapatıldıktan tamamen. SharedPreferences kullanarak diğer nesneler bu şekilde çok tasarruf ettim ama benim bütün dizi bu şekilde kaydetmek için nasıl çözemiyorum. Bu mümkün mü? Belki de SharedPreferences Bu konuda gitmek için yolu bu değil mi? Daha basit bir yöntem var mı?

CEVAP
14 AĞUSTOS 2011, Pazar


API 11'den sonra SharedPreferences Editörü Ayarlar kabul edin. Bir HashSet ya da ona benzer bir şey içine listenize dönüştürmek ve bu şekilde saklayın. Geri Okuma, bir ArrayList dönüştürmek, gerekirse sıralama ve gitmek için iyi bir konum.

//Retrieve the values
Set<String> set = myScores.getStringSet("key", null);

//Set the values
Set<String> set = new HashSet<String>();
set.addAll(listOfExistingScores);
scoreEditor.putStringSet("key", set);
scoreEditor.commit();

Ayrıca ArrayList seri hale getirmek ve/SharedPreferences/okuma kaydedin. Aşağıda çözüm:

DÜZENLEME:Tamam, aşağıda SharedPreferences sıralanmış nesne olarak ArrayList Kaydet ve SharedPreferences dan sonra okumak için çözümdür.

Çünkü API destekler sadece depolama ve alma dizelere/SharedPreferences (sonra API 11, basit), seri hale getirmek ve anlayabileceği ArrayList nesnesi olan listenin görevleri içine dize.

TaskManagerApplication sınıf addTask() yöntem, paylaşılan tercihi örneğini alın ve putString() yöntemi: seri ArrayList de saklar

public void addTask(Task t) {
        if (null == currentTasks) {
            currentTasks = new ArrayList<task>();
        }
        currentTasks.add(t);

        //save the task list to preference
        SharedPreferences prefs = getSharedPreferences(SHARED_PREFS_FILE, Context.MODE_PRIVATE);
        Editor editor = prefs.edit();
        try {
            editor.putString(TASKS, ObjectSerializer.serialize(currentTasks));
        } catch (IOException e) {
            e.printStackTrace();
        }
        editor.commit();
    }

Benzer şekilde onCreate() yöntemi tercih görevleri listesini almak için:

public void onCreate() {
        super.onCreate();
        if (null == currentTasks) {
            currentTasks = new ArrayList<task>();
        }

        //      load tasks from preference
        SharedPreferences prefs = getSharedPreferences(SHARED_PREFS_FILE, Context.MODE_PRIVATE);

        try {
            currentTasks = (ArrayList<task>) ObjectSerializer.deserialize(prefs.getString(TASKS, ObjectSerializer.serialize(new ArrayList<task>())));
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

Apache Domuzdan ObjectSerializer sınıf ObjectSerializer.java proje alabilirsiniz

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DavideoDesign

    DavideoDesig

    24 NİSAN 2006
  • NextKsa

    NextKsa

    7 EKİM 2009
  • picster

    picster

    20 NİSAN 2006