Soru & Cevap

Ekran döndürüldüğünde listview boşalıyor

18.03.2015 - 12:01

[code]

             kelime_tv = (EditText) findViewById(R.id.txt_ara_kelime);
             InputMethodManager imm = (InputMethodManager)getSystemService(
                     Context.INPUT_METHOD_SERVICE);
               imm.hideSoftInputFromWindow(kelime_tv.getWindowToken(), 0);
             memberName = kelime_tv.getText().toString().trim();
             lv = (ListView) findViewById(R.id.listview_tabir_arama);
             cursor = KayitGetirAramabaslayan();

             from = new String[] { "_id", "baslik" };
             to = new int[] { R.id.list_tabir_id, R.id.list_tabir_baslik };
            adapter = new SimpleCursorAdapter(
                     anaekran.this, R.layout.tabir_ara_list, cursor, from, to);
        lv.setEmptyView(findViewById(android.R.id.empty));
        lv.setAdapter(adapter);

 

 

private Cursor KayitGetirAramabaslayan(){
        kosullar="";
        String arr[] = memberName.split(" ");
        for(int i = 0; i < arr.length; i++){
            kosullar=kosullar + " UNION ALL SELECT distinct * FROM nedir where baslik like '"+ arr[i]+"%' and baslik not like '"+memberName+"%'" ;
        }
         SQLiteDatabase db = kategoriler.getReadableDatabase();
         Cursor cursor = db.rawQuery("SELECT distinct * FROM nedir where baslik like '"+memberName+"%'" +
         kosullar ,null );
         startManagingCursor(cursor);
        return cursor;
         }

[/code]

Arama butonuna tıklayıp arama yaptığımda textbox içerisindeki değere göre arama yapıyor ve sonuçları listviewe aktarıyor herşey normal. Ekranda hiç bir şeye dokunmadan ekran yan döndürüldüğünde listview içerisindeki satırlar kayboluyor. Yeniden arama yapmak gerekiyor listview in dolması için. her seferinde böyle ekran yan çevrildiğinde boşalıyor listview. Bu neden kaynaklanıyor nasıl engelleyebiliriz.

21 Görüntülenme

3 Cevap

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

picture-7541-1521024507.jpg
burhanaras
19.03.2015 - 04:00

onSaveInstanceState() methodunu override et. savedInstanceState isimli Bundle'a datayı ekle.

onCreate() içinde listeyi savedInstanceState objesinden çektiğin data ile yeniden bind et.

[code]


@Override public void onSaveInstanceState(Bundle savedInstanceState) {     // Save the user's current game state     savedInstanceState.putInt(STATE_SCORE, mCurrentScore);     savedInstanceState.putInt(STATE_LEVEL, mCurrentLevel);         // Always call the superclass so it can save the view hierarchy state     super.onSaveInstanceState(savedInstanceState); }
 

[/code]

picture-12265-1397142254.jpg
gkaradagan
18.03.2015 - 08:45

Android manifestin içinde activity tagının içine 

 android:configChanges="orientation|screenSize" 

ekleyin

Ahmet Burak Demirkoparan
18.03.2015 - 09:08
android:configChanges="keyboardHidden|orientation|screenSize" arkadaşın söylediği gibi bu keywordü androidmanifest içerisinde ilgili activity'e eklersen orientation(yatay-dikey) pozisyon değiştiğinde activity yeniden başlamaz bu sayede sonuçlarınızda kaybolmaz.
Rabia Kösem
18.03.2015 - 10:56
Bu işlemi denedim haklısınız veriler kaybolmuyor ama telefonuyan çevirdiğimde ekran yarım kalıyor. Ekran genişlemiyor yani dikey tutarken nekadar genişse yan çevirsende eski genişlikte kalıyor. onSaveInstanceState olayına hakim bir arkadaş varsa onu deneyebiliriz.
picture-44004-1425502034.jpg
sembozdemir
18.03.2015 - 12:57

ekran her döndürüldüğünde Activity sonlandırılıp yeniden başlatılır. Kodunu bunu dikkate alarak terkrar gözden geçirmelisin.

Rabia Kösem
18.03.2015 - 01:08
eskisini kapamadan yeni bir Activity çalıştırıp daha sonra onBackPressed ile yeni açılanı kapadığımza eskisi karşımıza çıkıyor yine. Bu esnada (2. açtığımız Activityi kapadığımızda) Activity yine yeniden mi başlıyor mu ?
Rabia Kösem
18.03.2015 - 01:14
Bunu nasıl engelleyeceğiz? onSaveInstanceState metodundan bahsedilmiş ama uyarlayamadım benim kodlara