How to update ViewPager content? [duplicate]
Asked Answered
A

2

11

i have this PageAdapter with days of the week, for each pager I have the same Layout. My problem is how update the right listView when change the day. When I change the day the Pager create a new pager and delete other, when this happened my listview point to new pager but not the current. For Example, is wedneyday and I save listview reference, when i change for Tuesday the monday pager is create and Thursday is deleted, and my reference point to last page create(monday) but I'm on tuesday.

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

I want to the ListView always point to listview of the current item.

Avelinaaveline answered 16/5, 2012 at 1:54 Comment(1)
#33012556Outmoded
R
43

Read this post: PagerAdapter

You can implement this function in PagerAdapter:

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

after, you can used this function:

yourPagerAdapterObject.notifyDataSetChanged();

This method is bad if you have too many views as to display. All the views are always recalculated. But in your case, for some views, it's okay.

Ryannryazan answered 16/5, 2012 at 6:47 Comment(1)
please see the post #33012556Outmoded
L
6

Overriding getItemPosition in PagerAdapter is easier, but bit more inefficient. This way, when you call notifyDataSetChanged(), the view pager will remove all views and reload them all. As so the reload effect is obtained. There was another option that suggested by alvarolb, is to setTag() method in instantiateItem() when instantiating a new view. Then instead of using notifyDataSetChanged(), you can use findViewWithTag() to find the view you want to update.

Levitical answered 13/5, 2014 at 15:0 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.