ViewPager 在 Android 裡是一個很好用的元件,使用者只要左右滑動,就可以顯示多頁的資訊。假如你的資料是從網路取得,如圖片,當使用者滑到還沒載入完成的頁面時,該怎麼辦呢?
雖然 ViewPager 會動態更新頁面,但是當下顯示的頁面是不會更新的。要達到上述的目的,我們要做一些事。ViewPager 主要是由 PagerAdapter 來處理內部的資料的,因此我們要從它下手。
PagerAdapter 有一個 method:getItemPosition。看 API 說明應該是用來判斷目前頁面的內容位置是否有變,但是也可以用它來滿足我們的要求,pseudo code 如下:
public int getItemPosition(Object object)
{
if ( 你的資料準備好了 )
{
return POSITION_NONE;
}
else
{
// 資料還沒準備好,此頁面維持不變
return POSITION_UNCHANGED;
}
}
雖然 overwrite 了 getItemPosition,但是這個 method 並不是我們主動去 invoke 的,PagerAdapter 提供了另一個 method 可以讓我們通知 adapger 有資料要更新了:notifyDataSetChanged。因此當我們確定資料準備好了就使用 notifyDataSetChanged,搭配 getItemPosition,就能動態更新目前的 ViewPager 頁面了。
參考資料:
1. ViewPager
2. PagerAdapter
雖然 ViewPager 會動態更新頁面,但是當下顯示的頁面是不會更新的。要達到上述的目的,我們要做一些事。ViewPager 主要是由 PagerAdapter 來處理內部的資料的,因此我們要從它下手。
PagerAdapter 有一個 method:getItemPosition。看 API 說明應該是用來判斷目前頁面的內容位置是否有變,但是也可以用它來滿足我們的要求,pseudo code 如下:
public int getItemPosition(Object object)
{
if ( 你的資料準備好了 )
{
return POSITION_NONE;
}
else
{
// 資料還沒準備好,此頁面維持不變
return POSITION_UNCHANGED;
}
}
雖然 overwrite 了 getItemPosition,但是這個 method 並不是我們主動去 invoke 的,PagerAdapter 提供了另一個 method 可以讓我們通知 adapger 有資料要更新了:notifyDataSetChanged。因此當我們確定資料準備好了就使用 notifyDataSetChanged,搭配 getItemPosition,就能動態更新目前的 ViewPager 頁面了。
參考資料:
1. ViewPager
2. PagerAdapter
留言
張貼留言