2012-05-16 74 views
9

我有這個PageAdapter星期幾,每個傳呼機我有相同的佈局。我的問題是如何更新正確的listView時更改一天。當我改變一天尋呼機創建一個新的尋呼機並刪除其他時,當發生這種情況時,我的列表視圖指向新的尋呼機,但不是當前的。例如,是wedneyday和我保存listview參考,當我改變星期二星期一尋呼機創建和星期四被刪除,並且我的參考點到最後一頁創建(星期一),但我在星期二。如何更新ViewPager內容?

我pageAdapter:

ListView lvwConfig; 

@Override 
public Object instantiateItem(View pager, int position) { 
    LayoutInflater inflater = (LayoutInflater) mContext 
     .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View v = inflater.inflate(R.layout.pager_layout, null); 
    lvwConfig = (ListView) v.findViewById(R.id.lvwConfig); 
    ((ViewPager) pager).addView(v, 0); 

    return v; 
} 

我想了ListView總是指向當前項目的列表視圖。

+0

http://stackoverflow.com/questions/33012056/view-pager-first-and-second-fragment-data-is-not-updating-when-data-changed-in-a –

回答

39

閱讀此篇:PagerAdapter

可以實現PagerAdapter此功能:

public int getItemPosition(Object object){ 
    return POSITION_NONE; 
} 

後,您可以使用此功能:

yourPagerAdapterObject.notifyDataSetChanged(); 

這種方法是不好的,如果你有顯示的視圖太多。所有的視圖總是重新計算。但在你的情況下,對於一些觀點,沒關係。

+0

請看帖子http ://stackoverflow.com/questions/33012056/view-pager-first-and-second-fragment-data-is-not-updating-when-data-changed-in-a –

5

在PagerAdapter中覆蓋getItemPosition更容易,但效率更低。 這樣,當您撥打notifyDataSetChanged()時,視圖尋呼機將刪除所有視圖並全部重新載入。因此獲得了重載效果。 還有另一個選項suggested by alvarolb,是setTag()方法在instantiateItem()實例化一個新的視圖。然後,您可以使用findViewWithTag()來代替使用notifyDataSetChanged()來查找要更新的視圖。