Soru & Cevap

String[] array SharedPreference ile kaydetmek istiyorum.

23.05.2014 - 03:14

Merhaba uygulama geliştiriyorum ve bir listviewdeki verileri context menu ile baska listviewe tıklanan satıra gore akratıyorum.

Custom List kullanıyorum ve listeye veri ekleme işlemini şu şekilde yapıyorum.

Önce verileri ArrayListe ekliyorum.

ArrayList<String> foo=new ArrayList<String>;

Sonra adaptore verileri set etmek için ArrayList'i String[] arraye ceviriyorum.

String [] bar = foo.toArray(new String[0]); 

Şu metodla ArrayListe veri ekliyorum.

public void favekle(String string) {
        foo.add(string);
        bar = foo.toArray(new String[0]);
       //Çevirdiğim string array i listeye adaptorle set ediyorum. 
        favadapter = new MyFavAdapter(Diziler.this,
                android.R.layout.simple_list_item_1, R.id.txtTitle, bar);
       
        favlist.setAdapter(favadapter);
        favadapter.notifyDataSetChanged();
        
    }

Uygulama kapanıp açıldığında listedeki elemanlar kayboluyor.Listedeki elemanları SharedPreferences ile kaydetmek istiyorum fakat SharedPreferences Editor'un putString() metodu String[] array kabul etmiyor.

Verileri aktardıgım listedeki elemanların kayıtlı kalması için ne yapabilirim?

13 Görüntülenme

3 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-2176-1429627808.jpg
bekirdursun
23.05.2014 - 06:19

String dizisi yerine tek string haline getirip aralarına bir ayraç koy. (Örn: - karakteri.) Daha sonra tekrar kullanmak istediğin zaman sharedpreferences ile çekip belirlediğin karaktere göre parçala.

StringBuilder sb = new StringBuilder();
for(int i=0;i<list.length; i++) {
    sb.append(list[i]).append("-");
}
prefsEditor.putString(list, sb.toString());

 

Daha sonra parçalamak için ise;

String[] list = list.split(",");

 

Bu şekilde çalıştırabilirsin.

Yavuz Selim Ekim
23.05.2014 - 07:25
Bekir hocam StringBuilder kullandım dediğinizi uyguladım ama uygulama kapatıp açınca liste itemleri yine kayboluyor.Dinamik olarak eklenen liste itemlerini kaydetmeliyim SharedPreference ile.String array uygulama kapanıp açıldığında tekrar sıfırlanıyor.Normal listemin itemlerini values klasorunde olustudugum string arrayden cekiyorum.Ama ikinci listeye birinci liste itemlerini eklemek istiyorum.Itemler kaydolmuyor.Başka bir yöntem var mı yada kodları inceleme imkanınız?Cevaplarınız için teşekkürler
picture-4918-1394634612.jpg
Hasancan
23.05.2014 - 05:02

Array'i veritabanında tutun.

picture-3082-1379678619.png
Cuneyt_Carikci
23.05.2014 - 04:12

SharedPreferences sınıfı sadece pirimitive type ları  (int, boolean,double,string) değişkenlerini barındırabiilyor. Şöyle bir yöntem işime yaramıştı

String []sira = {"bir","iki","uc"};

editor.putString("bir", "birinci eleman");

editor.putString("iki", "ikinci");

editor.putString("uc", "ucuncu");

 

for yapısında sira[] string arrayinin elemanlarını sırası ile alıp değerlee ulaşabilirsin ama liste uzunlugun belli olmalı tabi önceden

 

Yavuz Selim Ekim
23.05.2014 - 04:25
Liste uzunluğu başta tanımlı değil.Context menu itemi ile ekleme işlemi gerçekleştirdiğimde önce ArrayList e ekleniyor ArrayList String arraye donusuyor ve adaptore ekleniyor.Yani String array basta bos.Bir kaç yöntem denedim fakat başarısız oldum.