您的位置:首页 > 移动开发 > Android开发

Viewpager + GridView 嵌套使用

2017-01-05 16:43 751 查看
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("/"));

    }

}

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android viewpager gridview