【发布时间】:2017-09-24 13:51:46
【问题描述】:
这可能是一个讨论而不是一个问题。
实现多种类型的正常方式
如你所知,如果我们想在RecyclerView中实现多个类型,我们应该提供多个CustomViewHolder扩展RecyclerView.ViewHolder。
例如,
class TextViewHolder extends RecyclerView.ViewHolder{
TextView textView;
}
class ImageViewHolder extends RecyclerView.ViewHolder{
ImageView imageView;
}
然后我们必须重写getItemViewType。并在onCreateViewHolder 中构造TextViewHolder 或ImageViewHolder。
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == 0) {
return new ImageViewHolder(mLayoutInflater.inflate(R.layout.item_image, parent, false));
} else {
return new TextViewHolder(mLayoutInflater.inflate(R.layout.item_text, parent, false));
}
}
上面的代码是正常的,但还有另一种方法。
另一种方式
我认为只有一个CustomViewHolder 就足够了。
class MultipleViewHolder extends RecyclerView.ViewHolder{
TextView textView;
ImageView imageView;
MultipleViewHolder(View itemView, int type){
if(type == 0){
textView = (TextView)itemView.findViewById(xx);
}else{
imageView = (ImageView)itemView.findViewById(xx);
}
}
}
您在开发工作中使用哪种方式?
【问题讨论】:
-
对我来说.. 第一种方法更好,更容易阅读..
-
在设计您的应用程序或其任何组件时,请始终考虑使用 SOLID 原则。
-
这可能不是您期望的答案,但您是否已经考虑过使用 Epoxy ?它真的让你的生活更轻松
-
@Benjamin 也许您可以使用 Epoxy 添加示例答案?
标签: android android-layout android-recyclerview android-view android-viewholder