RecycleView 的多条目
Posted 菜鸟东东
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RecycleView 的多条目相关的知识,希望对你有一定的参考价值。
其实RecycleView和ListView的多条目差不多,而且不需要一共多少个布局这个方法;
下面是晚上写的,比较简单的多条目,就是重写一个 public int getItemViewType(int position) {} 方法
这个方法是获得布局的类别;然后在onCreateViewHolder(ViewGroup parent, int viewType里面判断,第二个就是type类型;
只要根据这个类型返回不同的ViewHolder就行了,但Viewholder要记得继承RecyclerView.ViewHolder;
import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.nostra13.universalimageloader.core.ImageLoader; import java.util.ArrayList; import java.util.List; /** * Created by admin on 2017/10/23. */ public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{ private ArrayList<User > list=new ArrayList<>(); private Context context; public MyAdapter(ArrayList<User> list, Context context) { this.list = list; this.context = context; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { //给Adapter添加布局,bq把这个view传递给HoldView,让HoldView找到空间 if(viewType==0){ View view= LayoutInflater.from(context).inflate(R.layout.xrecyc_adapter, parent,false); HoldView holdView=new HoldView(view); return holdView; }else{ View view2= LayoutInflater.from(context).inflate(R.layout.item_layout2, parent,false); HoldView2 holdView2=new HoldView2(view2); return holdView2; } } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { //position为Adapter的位置,数据从list里面可以拿出来。 if (holder instanceof HoldView) { User user = list.get(position); ((HoldView) holder).textView.setText(user.getTitle()); ImageLoader img = ImageLoader.getInstance(); img.displayImage(user.getImg(), ((HoldView) holder).img); }else if(holder instanceof HoldView2){ User user = list.get(position); ((HoldView2) holder).tv2.setText(user.getTitle()); } } @Override public int getItemViewType(int position) { if (position%2==0){ return 0; }else{ return 1; } } @Override public int getItemCount() { return list.size(); } private class HoldView extends RecyclerView.ViewHolder{ private TextView textView; private ImageView img; public HoldView(View itemView) { super(itemView); //根据onCreateViewHolder的HoldView所添加的xml布局找到空间 textView= (TextView) itemView.findViewById(R.id.xrecyc_text); img= (ImageView) itemView.findViewById(R.id.img); } } private class HoldView2 extends RecyclerView.ViewHolder{ private TextView tv2; public HoldView2(View itemView) { super(itemView); //根据onCreateViewHolder的HoldView所添加的xml布局找到空间 tv2= (TextView) itemView.findViewById(R.id.tv2); } } }
以上是关于RecycleView 的多条目的主要内容,如果未能解决你的问题,请参考以下文章
recycleview中使用checkbox导致的重复选中问题