Как обратиться к View текущего Item'a ViewPager'а?
У меня есть ViewPager
, для заполнения которого я использую ViewPagerAdapter extends PagerAdapter
.
Адаптер создаёт Item
для ViewPager'a
методом:
@Override
public Object instantiateItem(ViewGroup container,final int position) {}
Необходимо:
- заполнить
ViewPager
старыми данными. - Выполнить анимацию горизонтального
progressBar
на текущем элементе. - Обновить
ViewPager.
Вопрос:
Как обратиться к View
(ProgressBar'у
) текущего item
, чтобы выполнить анимацию. В каких методах всё это можно сделать?
Например:
- Старые данные 30 процентов. Сначала отображаются старые данные.
- Затем происходит загрузка до 54 процентов.
- В результате мы видим страничку с 54 процентами. На других элементах (
Item'ах
) данные тоже должны в итоге обновиться. Просто мы этого не видим и на других элементах анимация не нужна
Всё это происходит по событию Activity
onCreate
. Данные на item'aх
не должны обновляться при других событиях.
public class MyViewPagerAdapter extends PagerAdapter {
private Activity mActivity;
private int mPageCount;
private List<SummaryResult.Summary> summaryInfoList;
int currentStatus;
int currentPeriodNum;
public MyViewPagerAdapter(Activity activity,int pageCount, List<SummaryResult.Summary> summaryInfoList,int currentStatus,int currentPeriodNum) {
mActivity = activity;
mPageCount = pageCount;
this.summaryInfoList = summaryInfoList;
this.currentStatus = currentStatus;
this.currentPeriodNum = currentPeriodNum;
}
View mCurrentView;
@Override
public void setPrimaryItem(ViewGroup container, int position, Object object) {
super.setPrimaryItem(container, position, object);
mCurrentView = (View)object;
String text = ((TextView)mCurrentView.findViewById(R.id.periodTitleTextView)).getText().toString();
if (text != null){
Log.w("Log_page",text);
}
Log.w("Log_page","position = " + position);
}
@Override
public int getCount() {
return mPageCount;
}
@Override
public boolean isViewFromObject(View view, Object obj) {
return (view ==(View)obj);
}
@Override
public Object instantiateItem(ViewGroup container,final int position) {
ViewGroup viewGroup = (ViewGroup)mActivity.getLayoutInflater().inflate(
R.layout.item_card_summary, null);
SummaryResult.Summary result = summaryInfoList.get(position);
String[] numbers = {"","Первый","Второй","Третий","Четвёртый","Пятый","Шестой","Седьмой","Восьмой","Девятый","Десятый","Одинадцатый","Двенадцатый"};
TextView periodTitleTextView = (TextView)viewGroup.findViewById(R.id.periodTitleTextView);
TextView periodDurationTextView = (TextView)viewGroup.findViewById(R.id.periodDurationTextView);
final TextView progressTextView = (TextView)viewGroup.findViewById(R.id.progressTextView);
TextView factTextView = (TextView)viewGroup.findViewById(R.id.factTextView);
TextView planTextView = (TextView)viewGroup.findViewById(R.id.planTextView);
LinearLayout errorBar = (LinearLayout)viewGroup.findViewById(R.id.errorBar);
TextView noMetrAccessTextView = (TextView)viewGroup.findViewById(R.id.noMetrAccessTextView);
TextView companyStopTextView = (TextView)viewGroup.findViewById(R.id.companyStopTextView);
TextView factTitleTextView = (TextView)viewGroup.findViewById(R.id.factTitleTextView);
LinearLayout factLinearLayout = (LinearLayout)viewGroup.findViewById(R.id.factLinearLayout);
ImageView statusImageView = (ImageView)viewGroup.findViewById(R.id.statusImageView);
TextView planVisitsTextView = (TextView)viewGroup.findViewById(R.id.planVisitsTextView);
TextView factVisitsTextView = (TextView)viewGroup.findViewById(R.id.factVisitsTextView);
container.addView(viewGroup);
return viewGroup;
}
@Override
public void destroyItem(ViewGroup collection, int position, Object view) {
//must be overridden else throws exception as not overridden.
collection.removeView((View) view);
}
@Override
public float getPageWidth(int position) {
return 0.89f;
}
enum CurentStatus{
CompanyNorm(0),
CompanyStop(1),
CompanyError(2);
private final int value;
private CurentStatus(int value){
this.value = value;
}
public int getIntValue(){
return value;
}
}
}
Источник: Stack Overflow на русском