What have I learned… Day#184


ViewPager is one of the hottest android issues I wanna learn recently. When I head about that for the first time, about 2 years ago. I thought it was the hardest part. Right now i can understand within half a day which make me surprise!!

The principle of ViewPager

[ ViewPager > PagerAdapter > Fragment ]

First, add fragment you wanna display to pagerAdapter and let “pagerAdapter” handle every thing for you… like a lazy guy,lol.

Second, bind you adapter to ViewPager which you create it in Activity. andddddd that’s it.

Things that you have to keep it in your mind

  • ViewPager is in android support V4 ONLY.
  • FragmentPagerAdapter (android.support.v4.app.FragmentPagerAdapter) is used for ViewPager that does not have many fragments which means this adapter create fragment and not destroy it.
  • FragmentStatePagerAdpater (android.support.v4.app.FragmentStatePagerAdapter) is used for ViewPager that have a lot of fragments that means this adapter will create fragment and destroy it when fragment disappear from screen.
  • ViewPager cannot place in fragment because it is gonna be nested according to this post http://stackoverflow.com/a/12090227/3011340
thanks ake exorist for this graphic

PagerAdapter overring method getCount() and getItem()

How to bind adapter to ViewPager

use [static method] newInstance() instead of constructor

because newInstance is a static method

จากที่บอกในตอนแรกไปว่า View Pager นั้นทำงานคล้ายๆกับ List View นั้นก็คือ Fragment ที่ไม่แสดงผลจะมีการ Destroy ทิ้ง แล้วจึงสร้างขึ้นมาใหม่อีกครั้งเมื่อต้องการใช้งาน แต่ทว่าตอนที่ Fragment ถูกเรียกขึ้นมาแสดงใหม่อีกครั้งนั้น เมธอด getItem กลับไม่ได้ถูกเรียกขึ้นมาใหม่เหมือนกับ getView ของ List View

ถ้าโดน memory เคลียทิ้ง เมื่อไหร่ fragment ก็จะเป็น null เมื่อนั้น แล้วมันจะระเบิดตัวเองในที่สุด

นี่จึงเป็นปัญหาที่ทำให้การใช้ Constructor มาสร้าง Fragment นั้นไม่เหมาะสม

Sending data from static method to non-static method uses “Bundle” to send and “Argument” to retrieve. — solved http://stackoverflow.com/a/9245510/3011340

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.