美文网首页
RecyclerView终极适配器EasyAdapter使用

RecyclerView终极适配器EasyAdapter使用

作者: 璨哥 | 来源:发表于2018-12-08 20:35 被阅读0次

    1.继承HelperRecyclerViewAdapter类并且实现父类构造方法

         public class VideoGoodsAdapter extends HelperRecyclerViewAdapter{
    
            //这里参数除了context必传外  其他可以自己随便加啊  
            public VideoGoodsAdapter(Context context) {
             //这个super(context)必须写
              super(context);
              this.context = context;
              setEnableLoadMore(false);
           }
          }
    

    2.实现三个父类方法HelperBindData,checkLayout,setLayoutIds 按顺序看哈

        private final int itemGoods = 0;
        private final int itemRecommend = 1;
        @Override
        public void setLayoutIds(SparseIntArray layoutIds) {
        //这个方法layoutIds这个就是管理所有layout的  有多少直接put多少进去  key按位置0,1,2这样写
            layoutIds.put(itemGoods,R.layout.item_video_buy);
            layoutIds.put(itemRecommend,R.layout.item_video_choose);
        }
    
        @Override
        public int checkLayout(Object item, int position) {
        //item就是你List里面的对象啦,任意对象 判断下类型就直接返回对应layout的key就行了
            if (item instanceof VideoGoodsModel) {
                return itemGoods;
            } else if (item instanceof String) {
                return itemRecommend;
            }
            return 0;
        }
    
        @Override
        protected void HelperBindData(HelperRecyclerViewHolder viewHolder, int position, Object item) {
         //这个viewHolder是代表所有的 item指的是list里面的对象 直接用就行了 注意先判断viewType对象的layout
            int viewType = viewHolder.getItemViewType();
            switch (viewType){
                case itemGoods:
                    VideoGoodsModel videoGoodsModel = (VideoGoodsModel) item;
                    initModel(videoGoodsModel,viewHolder);
                    break;
                case itemRecommend:
                    TextView tvChoose = viewHolder.getView(R.id.tv_choose);
                    View dividerLayout = viewHolder.getView(R.id.divider_layout);
                    dividerLayout.setVisibility(View.GONE);
                    tvChoose.setText(context.getResources().getString(R.string.recommendations));
                    break;
                default:break;
            }
        }
    

    3.HelperRecyclerViewHolder这个万能holder怎么用

         private void initModel(final VideoGoodsModel goods,HelperRecyclerViewHolder holder) {
           //控件直接这样声明一下就可以用啦 如果是同一个的layout  就声明一套就行了
            ImageViewivGoods = holder.getView(R.id.iv_goods);
    
            String imgUrl = goods.imgUrl;
    
    if(!TextUtils.isEmpty(imgUrl ))
          ivGoods.setImage(imgUrl);
       }
    
    //不声明控件  也可以这么写   是不是很屌 嘿嘿 
    if(!TextUtils.isEmpty(imgUrl))
          holder.setImageUrl(R.id.iv_goods,imgUrl);
       }
    }
    
    //上面用的就是父类的这个方法  你们可以自己加方法 比方说封装图片加载框架进去都可以
    @Override
        public HelperRecyclerViewHolder setImageUrl(int viewId, String imgUrl) {
            ImageView imageView = getView(viewId);
            //这里可以修改为自己的图片加载库
            if (TextUtils.isEmpty(imgUrl)) return this;
            Uri uri = Uri.parse(imgUrl);
            imageView.setImageURI(uri);
            return this;
        }
    

    相关文章

      网友评论

          本文标题:RecyclerView终极适配器EasyAdapter使用

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