美文网首页程序员
MultiTypeAdapter(仿淘宝购物车)

MultiTypeAdapter(仿淘宝购物车)

作者: 小耗子_20da | 来源:发表于2019-12-20 11:51 被阅读0次

    RecyclerView与DataBinding封装

    以购物车为例

    1、创建一个类,并继承MultiTypeAdapter

    当然也可以创建自己的ViewHolder

    /**
     * 多类型viewType
     * 1、每种类型必须有对应的javabean,且必须实现RecyclerData接口,返回值可以不连续,但是必须不同;
     * 2、getLayoutRes(int viewType)必须返回对应的layout id;
     * 3、onBindViewHolder()方法中也必须将viewdatabinding这强转成对应的子类,数据也需要强转
     * 4、如果没有重写onCreateViewHolder()方法,则创建ViewHolder;
     * 5、注释部分是使用自定义的ViewHolder
     */
    public class ShoppingTrolleyAdapter extends MultiTypeAdapter {
    
        /**
         * 绑定数据到View中
         * <p>
         * 可以使用getItemViewType(position)获取对应的viewType
         *
         * @param position
         * @param viewHolder
         */
        @Override
        protected void onBindViewHolder(int position, ViewHolder viewHolder) {
            switch (getItemViewType(position)) {
                case 0:
                    ((ItemTopBinding) viewHolder.getBinding()).setGoodsTop((GoodsTopInfo) getDataList().get(position));
                    break;
                case 1:
                    ((ItemCentreBinding) viewHolder.getBinding()).setGoodsCenter((GoodsCentreInfo) getDataList().get(position));
                    break;
                case 2:
                    ((ItemBottomBinding) viewHolder.getBinding()).setGoodsBottom((GoodsBottomInfo) getDataList().get(position));
                    break;
            }
        }
    
        /**
         * 获取每种viewType对应的layout文件
         *
         * @param viewType 即RecyclerData中get_RV_ItemViewType()的返回值
         * @return
         */
        @Override
        protected int getLayoutRes(int viewType) {
            switch (viewType) {
                case 0:
                    return R.layout.item_top;
                case 1:
                    return R.layout.item_centre;
                case 2:
                    return R.layout.item_bottom;
            }
            return -1;
        }
    }
    

    2、实例化对象并设置点击事件

    mShoppingTrolleyAdapter = new ShoppingTrolleyAdapter();
    

    3、为RecyclerView设置Adapter

    mRecyclerView.setAdapter(mShoppingTrolleyAdapter);
    

    4、刷新或写入数据

    注意:必须在mRecyclerView.setAdapter(mFriendAdapter);才能写入数据

    mShoppingTrolleyAdapter.refresh(data);
    

    相关文章

      网友评论

        本文标题:MultiTypeAdapter(仿淘宝购物车)

        本文链接:https://www.haomeiwen.com/subject/cfibnctx.html