码迷,mamicode.com
首页 > 其他好文 > 详细

RecycleView 的多条目

时间:2017-10-23 21:53:04      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:inflate   content   ide   不同的   array   item   false   int   返回   

其实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 的多条目

标签:inflate   content   ide   不同的   array   item   false   int   返回   

原文地址:http://www.cnblogs.com/cainiaodongdong/p/7718749.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!