Как да актуализирам съдържанието на ViewPager?

имам това PageAdapter с дни от седмицата, за всеки пейджър имам едно и също оформление. Проблемът ми е как да актуализирам правилния listView при промяна на деня. Когато променя деня, в който Пейджърът създава нов пейджър и изтривам друг, когато това се случи, моят изглед на списък сочи към новия пейджър, но не и към текущия. Например, е сряда и аз запазвам препратка към изглед на списък, когато сменя за вторник, пейджърът за понеделник се създава, а четвъртък се изтрива и референтната ми точка е към създаването на последната страница (понеделник), но аз съм във вторник.

Моят 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 винаги да сочи към списъчен изглед на текущия елемент.


person weldsonandrade    schedule 16.05.2012    source източник
comment
stackoverflow.com/questions/33012056/   -  person kartheeki j    schedule 08.10.2015


Отговори (2)


Прочетете тази публикация: PagerAdapter

Можете да приложите тази функция в PagerAdapter:

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

след това можете да използвате тази функция:

yourPagerAdapterObject.notifyDataSetChanged();

Този метод е лош, ако имате твърде много изгледи за показване. Всички изгледи винаги се преизчисляват. Но в твоя случай за някои изгледи е добре.

person julien dumortier    schedule 16.05.2012
comment
моля, вижте публикацията stackoverflow.com/questions/33012056/ - person kartheeki j; 08.10.2015

Замяната на getItemPosition в PagerAdapter е по-лесна, но малко по-неефективна. По този начин, когато извикате notifyDataSetChanged(), пейджърът за изглед ще премахне всички изгледи и ще ги зареди отново. Така се получава ефектът на презареждане. Имаше друга опция, която предложена от alvarolb, е да setTag() метод в instantiateItem() при създаване на нов изглед. Тогава вместо да използвате notifyDataSetChanged(), можете да използвате findViewWithTag(), за да намерите изгледа, който искате да актуализирате.

person Davood Hanifi    schedule 13.05.2014