RecyclerView终极适配器EasyAdapter使用

2018-12-08  本文已影响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;
    }
上一篇下一篇

猜你喜欢

热点阅读