MyViewPagerAdapter2.java 4.23 KB
package com.cnlive.goldenline.ui.adapter;

import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.support.v4.view.PagerAdapter;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.GridView;

import com.cnlive.goldenline.R;
import com.cnlive.goldenline.model.GiftItem;
import com.cnlive.goldenline.util.LogUtils;

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

/**
 * Created by zhangxutong on 2016/2/16.
 */
public class MyViewPagerAdapter2 extends PagerAdapter {
    private List<GridView> mViewList;

    private int PAGE_SIZE = 8;
    private List<GiftItem> list;
    private Context mContext;
    private int key;

    public MyViewPagerAdapter2(Context context) {
        this.mContext = context;
    }

    public MyViewPagerAdapter2(Context context, int key) {
        this.mContext = context;
        this.key = key;

    }

    private static final String TAG = "MyViewPagerAdapter2";

    public void setGritItems(List<GiftItem> list, int PAGE_SIZE) {
        this.PAGE_SIZE = PAGE_SIZE;
        this.list = list;
        LogUtils.LOGE("setGritItems list = " + list);
        try {
            if (mViewList == null) mViewList = new ArrayList<>();
            if (mViewList.size() > 0) mViewList.clear();
            if (list != null && list.size() > 0) {
                int PageCount = list.size() / PAGE_SIZE;
                if (list.size() % PAGE_SIZE != 0) {
                    PageCount += 1;
                }
                Log.e(TAG, "setGritItems  PAGECOUNT = " + PageCount);
                for (int i = 0; i < PageCount; i++) {
                    GridView gridView = new GridView(mContext);
                    GiftGridAdapter adapter = new GiftGridAdapter(mContext, key);
                    gridView.setBackgroundColor(mContext.getResources().getColor(R.color.gridview_back));
                    if (giftClick != null)
                        adapter.setGiftClick(giftClick);
                    gridView.setAdapter(adapter);
                    adapter.setData(generateData(i));
//                    if (key ==1)
//                    {
//                        gridView.setNumColumns(8);
//                    }else{
                    gridView.setNumColumns(4);
//                    }
                    gridView.setChoiceMode(GridView.CHOICE_MODE_SINGLE);
                    gridView.setVerticalSpacing(1);
                    gridView.setHorizontalSpacing(1);
                    gridView.setPadding(3, 0, 3, 0);
                    gridView.setSelector(new ColorDrawable(Color.TRANSPARENT));
                    //                gridView.setOnItemClickListener(adapter);
                    mViewList.add(gridView);
                }
                notifyDataSetChanged();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private GiftClick giftClick;

    public interface GiftClick {
        void onGiftClick(View v, int pos, GiftItem item);
    }

    public void setGiftClick(GiftClick giftClick) {
        this.giftClick = giftClick;
    }


    public List<GiftItem> generateData(int page) {
        List<GiftItem> mList = new ArrayList<GiftItem>();
        int k = page * PAGE_SIZE;// 当前页的起始位置
        int iEnd = k + PAGE_SIZE;// 所有数据的结束位置
        while ((k < list.size()) && (k < iEnd)) {
            mList.add(list.get(k));
            k++;
        }
        Log.e(TAG, "generateData: page = " + page + " data  " + mList);
        return mList;
    }

    public void setData(List<GridView> mViewList) {
        this.mViewList = mViewList;
        notifyDataSetChanged();
    }

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

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        container.addView(mViewList.get(position));
        return (mViewList.get(position));
    }

    @Override
    public int getCount() {
        if (mViewList == null)
            return 0;
        return mViewList.size();
    }

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