GiftParentPagerAdapter.java 2.96 KB
package com.chudiangameplay.android.adapter;

import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.chudiangameplay.android.R;
import com.chudiangameplay.android.bean.GiftInfo;
import com.chudiangameplay.android.interface_.CommCallBack;
import com.chudiangameplay.android.ui.view.ChildViewPager;

import java.util.ArrayList;
import java.util.List;

/**
 * 礼物面板一级Pager,包含4个ViewPager
 * Created by 0 on 2019/8/16.
 */

public class GiftParentPagerAdapter extends PagerAdapter {

    List<List<GiftInfo>> data;
    List<GiftView_PagerAdapter_Room> adapters;
    List<ViewPager> viewPagers;
    Context mContext;
    CommCallBack callBack;

    public GiftParentPagerAdapter(Context mContext) {
        this.mContext = mContext;
    }

    public void setData(List<List<GiftInfo>> data, CommCallBack callBack) {
        this.data = data;
        this.callBack = callBack;
        adapters = new ArrayList<>();
        viewPagers = new ArrayList<>();
        notifyDataSetChanged();
    }

    @Override
    public int getCount() {
        return data == null ? 0 : data.size();
    }

    public int getDataSize(int position) {
        return data == null ? 0 : data.get(position).size();
    }

    public int getPagerPage(int position) {
        if (viewPagers != null && viewPagers.size() > position) {
            return viewPagers.get(position).getCurrentItem();
        }
        return 0;
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        List<GiftInfo> list = data.get(position);
        ViewPager viewpager = (ViewPager) LayoutInflater.from(mContext).inflate(R.layout.view_pager, null);
        final GiftView_PagerAdapter_Room adapter = new GiftView_PagerAdapter_Room(mContext);
        viewpager.setAdapter(adapter);
        viewpager.setOffscreenPageLimit(list.size());
        viewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                if (callBack != null) {
                    callBack.onResult(position);
                }
                adapter.changePage(position);
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
        adapter.setData(list);
        container.addView(viewpager);
        adapters.add(adapter);
        viewPagers.add(viewpager);
        return viewpager;
    }

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

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

}