2 friend ly friend_ly 于 2014.11.24 11:45 提问

PagerAdapter 里面找不到 DataSetObserver

最近做一个关于垂直滑动的ViewPager,在开源库中找到一个项目,发现引用了android的v4支持包,但是,那里面没有他所说的那个类,请问该怎么解决,拷贝supportv4view包到工程中,再重写PagerAdapter吗?

5个回答

plmmmmlq
plmmmmlq   2016.07.28 14:30
新版本support-v4的PagerAdapter里面没有DataSetObserver,而是使用android.database.DataSetObserver,所以在使用竖直滑动的VerticalViewPager时需要修改VerticalViewPager及VerticalViewPagerCompat部分代码。
一、VerticalViewPagerCompat:
package android.support.v4.view;

public final class VerticalViewPagerCompat {
    private VerticalViewPagerCompat() {
    }

    public static void setDataSetObserver(PagerAdapter adapter, DataSetObserver observer) {
        adapter.registerDataSetObserver(observer);
    }

    public static class DataSetObserver extends android.database.DataSetObserver {
    }
} 
二、VerticalViewPager:
 private class DataSetObserver extends VerticalViewPagerCompat.DataSetObserver {

        @Override
        public void onChanged() {
            dataSetChanged();
        }

        @Override
        public void onInvalidated() {
        }
    }
hp2175661
hp2175661 兄弟,靠谱!
8 个月之前 回复
heaimnmn
heaimnmn   Ds   Rxr 2014.11.24 11:49

恩,但是可能样式不对,你拷进去要重新编译supportv4

friend_ly
friend_ly 样式不对,是什么意思?我试试重新编译。
大约 3 年之前 回复
qianxiangsen
qianxiangsen   2016.03.22 09:18

我也出现了这个问题了

hp2175661
hp2175661   2017.05.19 10:43

2楼方法可行,已亲身验证。使用高版本的v4包时,用此方法可以解决。已赞!

aini10011
aini10011   2017.05.22 14:34

我也到类似的问题,发现个github开源工程中的自定义XxxViewPage视图的代码拿过来后,提示“类型 PagerAdapter 中的方法 unregisterDataSetObserver(DataSetObserver);registerDataSetObserver(DataSetObserver)不可视”;后来直接将对方工程的V4.jar包替换我工程里的V4.jar包就好鄂~~~

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!