
- 引入库
//代码简化 annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1' implementation 'com.jakewharton:butterknife:8.8.1' //recyclerView implementation 'com.android.support:recyclerview-v7:28.0.0' - 重写方法
@Override public int getItemViewType(int position) { if (position == 0) { return 0; } else if (position == 1 || position == 3) { return 1; } else { return 2; } } - 几种Viewholder
class Item3ViewHolder extends RecyclerView.ViewHolder{ @BindView(R.id.iv5) ImageView iv5; public Item3ViewHolder(@NonNull View itemView) { super(itemView); ButterKnife.bind(this, itemView); } } class Item2ViewHolder extends RecyclerView.ViewHolder{ @BindView(R.id.iv4) ImageView iv4; @BindView(R.id.iv3) ImageView iv3; @BindView(R.id.iv2) ImageView iv2; public Item2ViewHolder(@NonNull View itemView) { super(itemView); ButterKnife.bind(this, itemView); } } class Item1ViewHolder extends RecyclerView.ViewHolder{ @BindView(R.id.iv1) ImageView iv1; @BindView(R.id.tv1) TextView tv1; @BindView(R.id.tv2) TextView tv2; public Item1ViewHolder(@NonNull View itemView) { super(itemView); ButterKnife.bind(this, itemView); } } - 创建多种ViewHolder
@NonNull @Override public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) { if (i == 0) { View v = LayoutInflater.from(mContext).inflate(R.layout.item3, viewGroup, false); return new Item3ViewHolder(v); } else if (i == 1) { View view = LayoutInflater.from(mContext).inflate(R.layout.item2, viewGroup, false); return new Item2ViewHolder(view); } else { View view = LayoutInflater.from(mContext).inflate(R.layout.item1, viewGroup, false); return new Item1ViewHolder(view); } }
本文详细介绍了在Android应用中使用RecyclerView结合ButterKnife实现多类型ViewHolder的完整过程,包括依赖库的引入、ViewHolder的创建及重写getItemViewType与onCreateViewHolder方法。
925

被折叠的 条评论
为什么被折叠?



