2012-05-16 9 views
9

私はこのの曜日を持っています。各ページャには同じレイアウトがあります。私の問題は、どのように日の変更時に正しいリストビューを更新するかです。私が日を変更するとき、ポケットベルは新しいポケットベルを作成し、それを削除します。たとえば、wedneydayと私はリストビューのリファレンスを保存します。火曜日に変更すると、月曜日のページャが作成され、木曜日が削除され、最後のページへの参照ポイントが作成されますが(月曜日)、私は火曜日です。ViewPagerのコンテンツを更新するには?

マイpageAdapter:私はListViewにしたい

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; 
} 

は、常に現在の項目のリストビューを指します。

+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という新しいオプションがあり、新しいビューをインスタンス化するときにはinstantiateItem()setTag()メソッドになります。 notifyDataSetChanged()を使用する代わりに、findViewWithTag()を使用して、更新するビューを見つけることができます。

関連する問題