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;
}
网友评论