Welcome to My Blog 👋

Java, Spring Framework, Microservices, Docker, Kubernetes, AWS and Others 🚀
Follow Me

Android - ViewPager setOffscreenPageLimit(0)



  May 06, 2018    Labels:,,,,,,,, 

Android uygulamanıza bir viewPager elemanı ekleyerek fragment'ler ile kaydırmalı sayfalar oluşturabilirsiniz. Bu sayfaların yok edilmesi ve tekrar inşa edilmesi viewPager sınıfı tarafından otomatik olarak yapılır. Aynı anda kaç sayfanın var olacağını viewPager sınıfının setOffscreenPageLimit metodu ile belirleyebilirsiniz. Ancak aynı anda sadece bir sayfa var olmasını isterseniz bunu viewPager sınıfı ile yapmanız mümkün değil. Uygulamanızda her sayfa geçişinde sayfalarınızın yeniden yüklenmesini veya sayfalarınızdaki verilerin güncellenmesini isteyebilirsiniz. Bu sorunu çözmek için bu yazımda bir yöntem önereceğim.

  1. onTabSelected metodu içerisinde her sayfa seçini için viewPager.getAdapter.notifyDataSetChanged() metodunu çağırın.
  2. PagerAdapter sınıfında notifyDataSetChanged() metodunu override edin.
  3. PagerAdapter sınıfının getItem metodunda her pozisyon için oluşturulan sayfayı global bir değişkene atayın.(Override edilen notifyDataSetChange() metodu içerisinden erişebilmek için)
  4. Override ettiğiniz notifyDataSetChanged() metodu içerisinde oluşturulan sayfalara erişerek istediğiniz değişikliği yapabilirsiniz.

Önemli Not! ViewPager elemanınızda kaç sayfa var ise setOffscreenPageLimit() metodu ile o sayfaların hepsinin aynı anda yüklenmesini sağlamalısınız. Aksi halde sayfa geçişlerinde hata alırsınız. Bunun nedeni sayfa daha oluşturulmadan güncelleme yapılmasıdır.

Not! Bu sorunu çözmek için yabancı kaynaklarda bir çok yöntem var (viewPager sınıfını yeniden yazıp setOffscreenPageLimit metodunu değiştirmek gibi). Ben sorunumu bu yöntem ile çözdüm. Uygulamamda 3 sayfa olduğu için bir sorun oluşturmadı. Ancak uygulamanızda çok fazla sayfa olursa bellek sorunu oluşabilir. Bu durumda farklı bir yöntem denemelisiniz.

No comments:

Post a Comment