如何强制ViewPager重新实例化其项实例、ViewPager

由网友(只是曾经)分享简介:我使用 ViewPager 来允许用户视图之间刷卡。有没有办法如何强制该 ViewPager 来重新加载/重新实例化它在案件的看法,他们不再有效,或需要被刷新?我想再次呼吁 notifyDataSetChanged()它的适配器,但是这并不会调用 instantiateItem()方法。修改下面是从ViewPager及...

我使用 ViewPager 来允许用户视图之间刷卡。有没有办法如何强制该 ViewPager 来重新加载/重新实例化它在案件的看法,他们不再有效,或需要被刷新?我想再次呼吁 notifyDataSetChanged()它的适配器,但是这并不会调用 instantiateItem()方法。

修改

下面是从ViewPager及其适配器definision扩展的类。贝娄是刷新()的方法,我打电话的时候,我想强制刷新项目。

 公共类DayFlipper扩展ViewPager {

公共类FlipperAdapter扩展PagerAdapter {

    @覆盖
    公众诠释getCount将(){
        返回DayFlipper.DAY_HISTORY;
    }

    @覆盖
    公共无效startUpdate(View容器){
    }

    @覆盖
    公共对象instantiateItem(View容器,INT位置){
        Log.d(TAG,instantiateItem():+位置);

        日期D = DateHelper.getBot();
        的for(int i = 0; I<位置;我++){
            D = DateHelper.getTomorrow(四);
        }

        D = DateHelper.normalize(四);

        CubbiesView CV =新CubbiesView(mContext);
        cv.setLifeDate(四);
        ((ViewPager)容器).addView(栽培品种,0);
        //添加地图
        cv.setCubbieMap(MMAP);
        cv.initEntries(四);
        返回简历;
    }

    @覆盖
    公共无效destroyItem(View容器,INT位置,Object对象){
        ((ViewPager)容器).removeView((CubbiesView)对象);
    }

    @覆盖
    公共无效finishUpdate(View容器){

    }

    @覆盖
    公共布尔isViewFromObject(查看视图,Object对象){
        返回查看==((CubbiesView)对象);
    }

    @覆盖
    公共Parcelable saveState和(){
        返回null;
    }

    @覆盖
    公共无效restoreState(Parcelable状态,类加载器加载器){

    }

}

    ...

    公共无效刷新(){
    getAdapter()notifyDataSetChanged()。
}
}
 

解决方案

我已经找到了解决办法。这仅仅是一个解决方法,我的问题,但目前唯一的解决办法。

ViewPager PagerAdapter更新不及时的查看

 公众诠释getItemPosition(Object对象){
   返回POSITION_NONE;
}
 
android 自定义viewpager android 自定义viewpager CSDN

有谁知道这是否是一个错误或不?

I am using ViewPager to allow user to swipe between its views. Is there a way how to force this ViewPager to reload/re-instantiate its views in case that they are no longer valid or needs to be refreshed? I tried to call notifyDataSetChanged() on its adapter but this does not invoke instantiateItem() method again.

EDIT

Here is the class that extends from ViewPager and its adapter definision. Bellow is the refresh() method that I call when I want to force to refresh items.

public class DayFlipper extends ViewPager {

public class FlipperAdapter extends PagerAdapter {

    @Override
    public int getCount() {
        return DayFlipper.DAY_HISTORY;
    }

    @Override
    public void startUpdate(View container) {
    }

    @Override
    public Object instantiateItem(View container, int position) {
        Log.d(TAG, "instantiateItem(): " + position);

        Date d = DateHelper.getBot();
        for (int i = 0; i < position; i++) {
            d = DateHelper.getTomorrow(d);
        }

        d = DateHelper.normalize(d);

        CubbiesView cv = new CubbiesView(mContext);
        cv.setLifeDate(d);
        ((ViewPager) container).addView(cv, 0);
        // add map
        cv.setCubbieMap(mMap);
        cv.initEntries(d);
        return cv;
    }

    @Override
    public void destroyItem(View container, int position, Object object) {
        ((ViewPager) container).removeView((CubbiesView) object);
    }

    @Override
    public void finishUpdate(View container) {

    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view == ((CubbiesView) object);
    }

    @Override
    public Parcelable saveState() {
        return null;
    }

    @Override
    public void restoreState(Parcelable state, ClassLoader loader) {

    }

}

    ...

    public void refresh() {
    getAdapter().notifyDataSetChanged();
}
}

解决方案

I have found a solution. It is just a workaround to my problem but currently the only solution.

ViewPager PagerAdapter not updating the View

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

Does anyone know whether this is a bug or not?

阅读全文

相关推荐

最新文章