SORU
31 Temmuz 2012, Salı


ViewPager içerik çizmez, kalır boş döner

ViewPager ile çok garip bir sorun, burada bir sürü sıkıntı çekiyoruz. Biz gömmek her ViewPager sayfasında listeler ve tetikleyici liste veri güncellerken hem liste görünümü ve çağrı adaptör adaptörü notifyDataSetChanged.

İzlediğimiz şey bazen, sayfayı görüntülemek ağacı güncelleme olmamasıdır, yani boş, ya da bazen belleği bile kaybolur. Disk belleği ileri geri birkaç kez, içerik aniden yeniden görünür. Eğer Android görünümünü bir güncelleme burada eksik gibi görünüyor. Ben de hiyerarşi görüntüleyici ile ayıklarken, bir görünüm seçmek her zaman hiyerarşi görüntüleyici seçilen görünüm kendisini yeniden çizmek için zorlar çünkü yeniden, görünüşe göre yapacak fark ettim.

Bu program aracılığıyla iş olsa yaparım değil; liste görünümü veya tüm görünüm çağrı bile, geçersiz bir etkisi olmadı.

Bu uyumluluk-v4_r7 kütüphane ile. Ben de denedim, kullanmak için en son revizyon, beri iddia düzeltmek için pek çok konu ile ilgili çağrı görünüm, ama daha da kötüsü konularda (örneğin, jestler vardı kırık böylece girmeme izin vermedi sayfasından tüm sayfaları artık bazen.)

Bir başkasının bu sorunları da çalışan, ya da bu sebep ne olabilir bir fikriniz var mı?

CEVAP
23 AĞUSTOS 2012, PERŞEMBE


Sonunda bir çözüm bulmayı başardı. Görünüşe göre bizim iki uygulama sorunları yaşadı:

  1. bizim adaptörü destroyItem() görünümü kaldırmak değil.
  2. olduğumuz önbellekleme manzaralı, böylece olursak, şişirmek düzeni sadece bir kez, ve, bu yana değildik çıkarma görünümünde destroyItem(), değildik ekleme instantiateItem() ama sadece dönen önbelleğe görünümü karşılık gelen geçerli konum.

Çok derin ViewPager - Bu yapmanız gereken tam olarak kesin değil - ama doktorlar diyor ki: kaynak kodu bakmadım

() destroyİtem

ve:

Çok basit bir PagerAdapter sayfa anahtar nesneler olarak kendilerini Görünümleri kullanma, oluşturma sonra instantiateİtem () ViewGroup, int onları dönen ve üst ViewGroup ekleyerek seçebilirsiniz. Eşleşen bir destroyİtem(ViewGroup, int, Nesne) uygulama ana ViewGroup Manzarası çıkarıyoruz ve isViewFromObject(Görünüm, Nesne) return == nesne görünüm olarak uygulanabilir;.

Sonucum ViewPager açıkça/instantiateItem()/destroyItem()kendi çocukları çıkarın eklemek için, alttaki adaptör dayanır. Bu, eğer adaptör PagerAdapter, alt sınıfıdır eğer bu mantık uygulamak gerekir.

Yan Not: Eğer ViewPager içinde listeler kullanıyorsanız this farkında olun.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • MobileTechReview

    MobileTechRe

    6 HAZİRAN 2008
  • MrRandomSong

    MrRandomSong

    29 Kasım 2009
  • YouChewBu

    YouChewBu

    26 Ocak 2009