ViewPager与recycleView同时使用时出现的View加载空白问题

一.问题简述:

                ViewPager一般常用于与Fragment结合或者与View结合使用,当布局只有ViewpPager时,View的加载十分的完美,当加入RecycleView时出现了问题,第一张和第二张View可以加载,但是第三张以后是空白View,这不是重点,重点是调试的时候,ViewPager的View的加载又是十分的完美,而运行的时候又会出现加载空白问题,真的是感觉醉醉的。。。


二.问题分析:

经过我的调试排除了以下可能(可能出现空白的原因):

mImageView的问题:序号问题、越界问题、mImageView没获得数据问题(反正就是非常的确定不是mImageView的问题)

adpater的问题:页面被覆盖问题:加载和释放图片时间不合理问题(反正就是非常的确定不是adapter的问题

毕竟没加入RecycleView时一切正常,所以排除了上述可能原因。

1.Fragment的onCreateView()代码,模块ViewPager的adapter代码模块:

public class HomePageFragment extends Fragment {
   
  	...




    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = LayoutInflater.from(getContext()).inflate(R.layout.home_page, container, false);
        ButterKnife.bind(this, view);
        init();

        //ViewPager模块
        pointInit();
        mMyPagerAdapter = new MyPagerAdapter(mImageViews);
        mImagePager.setAdapter(mMyPagerAdapter);
        mMyThread.start();	//这是开启线程每隔一段时间切花图片线程(不用关注)
        viewPagerChange();	//ViewPager换页监听器(不用关注)

        //RecycleView列表
        initRecycleViewList();	//获取到RecycleView列表的数据(不用关注)
        mMyRecycleViewAdapter = new MyRecycleViewAdapter(getContext(),mLists);
        mRecycleView.setAdapter(mMyRecycleViewAdapter);
        LinearLayoutManager mLinearLayoutManager = new LinearLayoutManager(getContext(),<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在Android中,ViewPager可以通过PagerAdapter来动态加载ViewPagerAdapter是一个抽象类,需要实现以下方法: 1. getCount():返回ViewPager中的View数量。 2. instantiateItem():创建并返回指定位置的View。 3. destroyItem():销毁指定位置的View。 具体实现步骤如下: 1. 创建一个继承自PagerAdapter的类,实现上述三个方法。 2. 在instantiateItem()方法中,根据指定位置创建View,并将其添加到ViewPager中。 3. 在destroyItem()方法中,将指定位置的ViewViewPager中移除。 4. 在使用ViewPager,将PagerAdapter的实例设置ViewPager。 示例代码如下: ``` public class MyPagerAdapter extends PagerAdapter { private List<View> mViewList; public MyPagerAdapter(List<View> viewList) { mViewList = viewList; } @Override public int getCount() { return mViewList.size(); } @Override public Object instantiateItem(ViewGroup container, int position) { View view = mViewList.get(position); container.addView(view); return view; } @Override public void destroyItem(ViewGroup container, int position, Object object) { View view = mViewList.get(position); container.removeView(view); } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } } ``` 使用,可以先创建一个List<View>,然后将需要显示的View添加到List中,并将List传入MyPagerAdapter的构造函数。最后将MyPagerAdapter的实例设置ViewPager即可。 ``` List<View> viewList = new ArrayList<>(); viewList.add(view1); viewList.add(view2); viewList.add(view3); MyPagerAdapter adapter = new MyPagerAdapter(viewList); viewPager.setAdapter(adapter); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值