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

  • AmeriiK_HD

    AmeriiK_HD

    16 AĞUSTOS 2012
  • ColdfusTion

    ColdfusTion

    3 Aralık 2007
  • Philip DeFranco

    Philip DeFra

    16 EYLÜL 2006