2012-01-17 30 views
13

Umarız birisi, Viewpagers ile yaptığım küçük bir sorun/karışıklık ve veri kaydetme konusunda bana yardımcı olabilir.Android Viewpager veri kaydetme ve görüntüleme

SORUN:

Ben dört görüntülemelerdeki kaydırma, ilk görünüm iki iplikçiler, bir dize veya seçili öğeyi görüntülemek iki textViews vardır. Üçüncü sayfaya gidip ikinci sayfaya dönersem, ilk görünümdeki veriler kaybolur. Verileri kaydetmeye gerek yok.

Bu, aşağıda belirtilen iki rutinde yapılabilir mi? Eğer öyleyse, en iyi tahmin şöyle olurdu: eğer öyleyse, ne tür komutlar belirtilmelidir?

KODU:

@Override 
public void restoreState(Parcelable arg0, ClassLoader arg1) {  
} 

@Override 
public Parcelable saveState() { 
    return null; 
} 

EKSTRA BİLGİ:

@Override 
public void destroyItem(View arg0, int arg1, Object arg2) { 
    ((ViewPager) arg0).removeView((View) arg2); 
} 

@Override 
public boolean isViewFromObject(View arg0, Object arg1) { 
    return arg0 == ((View) arg1); 
} 

@Override 
public Parcelable saveState() { 
    return null; 
} 

@Override 
public void finishUpdate(View arg0) { 
} 

@Override 
public void restoreState(Parcelable arg0, ClassLoader arg1) { 
} 

@Override 
public void startUpdate(View arg0) { 
} 
+1

arg0, büyük bir değişken addır! – Roel

cevap

46

yerine kaydetme şu şekildedir: viewpager yöntemlerden

public Object instantiateItem(View collection, int position) { 
} 

tam listesi kullanılıyor vardır Bu sayfaların durumu ViewPager'ınızı değiştirebilir, böylece tüm sayfalarınızı onları yok edip kaydırdığınızda onları yeniden oluşturun.

ViewPager pager = (ViewPager) findViewById(R.id.viewpager); 
pager.setOffscreenPageLimit(3); // the number of "off screen" pages to keep loaded each side of the current page 
pager.setAdapter(new PageAdapter(context)); 

Şimdi sayfalar bellek tüketimini artıracaktır çünkü

ancak bu teknikle dikkat 'canlı' tutulacaktır:

Yani, örneğin size 4 sayfalar varsa. SetOffscreenPageLimit() öğesine geçirilen sayı, geçerli sayfanın her bir tarafının saklanacak sayfa sayısıdır. Bu durumda toplamda 4 sayfa var, böylelikle en kötü durum senaryosu, sayfa setinin en uzak köşesinde olduğumuz zamandır - şu anda görülebilir sayfaya sahibiz ve sonra kalan 3 sayfa bir taraftan ekran dışıdır ve böylece tutulur bellekte. Bununla birlikte, daha büyük bir veri kümesiyle, bellekte 7 sayfa tutulduğu anlamına gelebilir (geçerli sayfa artı her iki taraf da 3). Genel olarak, en uygun çözüm, boşaltma ve sayfa durumunu yeniden yükleme ve yeniden oluşturma ile daha uygun bir çözüm olacaktır.

Bu yardımcı olur umarım

+0

Bir ekran sınırı olduğunu bilmiyordum, bir göz atabilir ve size bildirir. Teşekkürler tavsiye için :) – Hadden11

+0

onun bir şey yanlış yapıyorum olmadığını bilmiyorum ama bu kapalı girerken ekran o ile geliyor sınırlamak -> yöntem setOffscreenPageLimit (int) türü doesnt için tanımlanmamıştır olmak gibi görünüyor Bir görüntüleyici – Hadden11

+0

ile bağlantılı olarak içe aktarma, görüntüleme aracınız için nasıl görünür? import edilmelidir android.support.v4.view.ViewPager; –

İlgili konular