Viewpager + GridView 嵌套使用

来源:互联网 发布:迅捷贝软件 编辑:程序博客网 时间:2024/06/03 19:38

viewpager gridview  最主要是2个adapter的代码,其他的就不写了

 

首先是viewpage的adapter

 

public class BasePagerAdapter extends PagerAdapter {
    protected static final String TAG = "BasePagerAdapter";
    Context mContext;
    List<App> app;
    private int NUMCOLUMS = 6; //gridview  每一页显示几个
    public MyGridView mGvYkj;
    private View yunKongJianGridView;

    public BasePagerAdapter(Context context, List<App> app) {
        this.mContext = context;
        this.app = app;
    }

    @Override
    public int getCount() {
        return getVpCount();
    }

    @Override
    public boolean isViewFromObject(View arg0, Object arg1) {
        return arg0 == arg1;
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        yunKongJianGridView = View.inflate(mContext,
                R.layout.yunkongjiangridview, null);

        mGvYkj = (MyGridView) yunKongJianGridView.findViewById(R.id.gv_ykj);

        mGvYkj.setAdapter(new GridViewAdapter(mContext, app, position));

        initListener(position);

        container.addView(yunKongJianGridView);

        return yunKongJianGridView;
    }

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

    public int getVpCount() {
            if (app.size() % NUMCOLUMS == 0) {
                return app.size() / NUMCOLUMS;
            } else {
                return app.size() / NUMCOLUMS + 1;
            }
    }

    DownLoadServiceOKHttp3 downLoadServiceOKHttp3;

    public void initListener(final int vpPosition) {
        
        mGvYkj.setOnItemClickListener(new OnItemClickListener() {

            public void onItemClick(AdapterView<?> parent, View v, int position,
                    long id) {
                position = vpPosition * NUMCOLUMS + position;      
            }
        });
    }

 

gridview的adapter

public class GridViewAdapter extends BaseAdapter {
    private static final String TAG = "GridViewAdapter";
    Context mContext;
    List<App> app;
    int vpPosition;//viewpager当前是第几页
    private int NUMCOLUMS = 6;gridview  每一页显示几个

    public GridViewAdapter(Context context, List<App> app, int vpPosition
            ) {
        this.mContext = context;
        this.app = app;
        this.vpPosition = vpPosition;
    }

    @Override
    public int getCount() {
        if (app.size() <= NUMCOLUMS) {
            return app.size();
        }
        if (app.size() - vpPosition * NUMCOLUMS >= NUMCOLUMS) {
            return NUMCOLUMS;
        } else {
            return app.size() % NUMCOLUMS;
        }
    }

    @Override
    public Object getItem(int position) {
        return app.get(position + vpPosition * NUMCOLUMS);
    }

    @Override
    public long getItemId(int position) {
        return position + vpPosition * NUMCOLUMS;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        position = position + vpPosition * NUMCOLUMS;
        ViewHodler viewHodler = null;
        if (convertView == null) {
            viewHodler = new ViewHodler();
            convertView = View.inflate(mContext,
                    R.layout.yunkongjiangridchildview, null);
            viewHodler.ivApp = (ImageView) convertView
                    .findViewById(R.id.iv_app);
            viewHodler.pb = (RoundProgressBar) convertView
                    .findViewById(R.id.pb);
            viewHodler.appName = (TextView) convertView
                    .findViewById(R.id.tv_appname);
            convertView.setTag(viewHodler);
        } else {
            viewHodler = (ViewHodler) convertView.getTag();
        }

        //回显进度条,可忽略

        String fileName = fileName(app.get(position).getDownUrl());
        int downPosition = SPUtils.getInt(mContext, fileName(fileName), 0);

        if (downPosition > 0 && downPosition < 100) {
            viewHodler.pb.setVisibility(View.VISIBLE);
            viewHodler.pb.setProgress(downPosition);
            Log.d(TAG, position + "..");
        } else {
            viewHodler.pb.setVisibility(View.GONE);
            viewHodler.pb.setProgress(0);
        }

        Glide.with(mContext)
                .load(ApplicationConst.APP_DOWNLOAD_URL_PARENT_NEW
                        + app.get(position).getIconUrl())
                .into(viewHodler.ivApp);
        viewHodler.appName.setText(app.get(position).getName());

        return convertView;
    }

    class ViewHodler {
        ImageView ivApp;
        TextView appName;
        RoundProgressBar pb;
    }

    public String fileName(String s) {
        return s.substring(s.lastIndexOf("/"));
    }
}

 

0 0