How can i re-instantiate a ViewPager ? My adapter looks like this :
private class MyPagerAdapter extends PagerAdapter{
@Override
public int getCount() {
return NUM_AWESOME_VIEWS;
}
@Override
public Object instantiateItem(View collection, int position) {
LayoutInflater inflater = (LayoutInflater)cxt.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.search_result, null);
//
开发者_C百科 TextView title = (TextView)layout.findViewById(R.id.search_result_title);
TextView body = (TextView)layout.findViewById(R.id.search_result_body);
TextView byline = (TextView)layout.findViewById(R.id.search_result_byline);
TextView day = (TextView)layout.findViewById(R.id.search_result_date_day);
TextView month = (TextView)layout.findViewById(R.id.search_result_date_month);
TextView year = (TextView)layout.findViewById(R.id.search_result_date_year);
TextView page = (TextView)layout.findViewById(R.id.search_result_page);
TextView page_max = (TextView)layout.findViewById(R.id.search_result_page_max);
//
title.setText(list_title.get(position).toString());
body.setText(list_body.get(position).toString());
day.setText(list_day.get(position).toString());
month.setText(list_month.get(position).toString());
year.setText(list_year.get(position).toString());
byline.setText(list_byline.get(position).toString());
page.setText(Integer.toString(position+1));
page_max.setText(Integer.toString(NUM_AWESOME_VIEWS));
//
((ViewPager) collection).addView(layout,0);
return layout;
}
@Override
public void destroyItem(View collection, int position, Object view) {
((ViewPager) collection).removeView((View) view);
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view==((View)object);
}
@Override
public void finishUpdate(View arg0) {}
@Override
public void restoreState(Parcelable arg0, ClassLoader arg1) {}
@Override
public Parcelable saveState() {
return null;
}
@Override
public void startUpdate(View arg0) {}
}
I found a way to reload a bunch of data into the list, but how can i reload all the pages from the onPostExecute (Asynctask).
Add following to your MyPagerAdapter class:
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
and call
myPager.getAdapter().notifyDataSetChanged();
from onPostExecute of your AsyncTask
I think calling notifyDataSetChanged(); using the adapter reference will solve your problems.
精彩评论