RecyclerView利用setSpanSizeLookup()返回不一樣的整數而實現多條目

import android.content.Context;java

import android.support.v7.widget.GridLayoutManager;android

import android.support.v7.widget.RecyclerView;ide

import android.view.LayoutInflater;this

import android.view.View;url

import android.view.ViewGroup;排序

import android.widget.TextView;get

 

import com.example.pdd.bean.Bean;it

import com.example.pdd.bean.Bean1;io

import com.facebook.drawee.view.SimpleDraweeView;class

import com.youth.banner.Banner;

 

import java.util.ArrayList;

import java.util.List;

 

/**

 * Created by Administrator on 2017/12/13/013.

 */

public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{

    public static final int TYPE_PULL_IMAGE = 0;

    public static final int TYPE_RIGHT_IMAGE = 1;

    public static final int TYPE_THREE_IMAGE = 2;

    private Object object;

    private Context context;

 

    public MyAdapter(Object object, Context context) {

        this.object=object;

        this.context = context;

    }

    @Override

    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

           if(viewType==TYPE_PULL_IMAGE){

               View view=LayoutInflater.from(context).inflate(R.layout.item2,parent,false);

                ViewHolder2 holder2=new ViewHolder2(view);

               return holder2;

           }else if(viewType==TYPE_RIGHT_IMAGE){

               View view=LayoutInflater.from(context).inflate(R.layout.item1,parent,false);

               ViewHolder1 holder1=new ViewHolder1(view);

              return holder1;

           }else {

               View view = LayoutInflater.from(context).inflate(R.layout.item, parent, false);

               ViewHolder holder = new ViewHolder(view);

               return holder;

           }

    }

 

    @Override

    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {

        if (holder instanceof ViewHolder2){

            List<String> list1=new ArrayList<String>();

           if(object instanceof Bean1){

               for (int i=0;i<((Bean1) object).bean2s.size();i++){

                   list1.add(((Bean1) object).bean2s.get(position).home_banner);

               }

           }

            ((ViewHolder2) holder).banner.setImages(list1).setImageLoader(new GlideImageLoader()).isAutoPlay(true).setViewPagerIsScroll(true).start();

        }

        if(holder instanceof ViewHolder1){

            ((ViewHolder1) holder).titel.setText("綜合排序");

            ((ViewHolder1) holder).titel2.setText("銷量優先");

        }

        if(holder instanceof ViewHolder){

            if (object instanceof Bean){

            ((ViewHolder) holder).price.setText("¥:"+((Bean) object).goods_list.get(position).group.price);

            ((ViewHolder) holder).tv.setText(((Bean) object).goods_list.get(position).short_name);

            ((ViewHolder) holder).sdv.setImageURI(((Bean) object).goods_list.get(position).image_url);

            }

        }

    }

 

 

    @Override

    public int getItemCount() {

 

        return 19;

    }

 

    @Override

    public void onAttachedToRecyclerView(RecyclerView recyclerView) {

        super.onAttachedToRecyclerView(recyclerView);

        RecyclerView.LayoutManager manager=recyclerView.getLayoutManager();

        if(manager instanceof GridLayoutManager){

            final GridLayoutManager gridLayoutManager= (GridLayoutManager) manager;

            gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {

                @Override

                public int getSpanSize(int position) {

                    int type=getItemViewType(position);

                    switch (type){

                        case TYPE_PULL_IMAGE:

                            return 2;

                        case TYPE_RIGHT_IMAGE:

                            return 2;

                        case TYPE_THREE_IMAGE:

                            return 1;

                    }

                    return 0;

                }

            });

        }

    }

 

    @Override

    public int getItemViewType(int position) {

        if (position==0){

            return TYPE_PULL_IMAGE;

        }else if(position==1)

        {

        return TYPE_RIGHT_IMAGE;

        }else

            return TYPE_THREE_IMAGE;

    }

 

    public class ViewHolder extends RecyclerView.ViewHolder {

        TextView tv,price;

        SimpleDraweeView sdv;

        public ViewHolder(View itemView) {

            super(itemView);

            sdv=itemView.findViewById(R.id.sdv);

            tv=itemView.findViewById(R.id.tv);

            price=itemView.findViewById(R.id.price);

        }

    }

    public class ViewHolder1 extends RecyclerView.ViewHolder{

        TextView titel,titel2;

          public ViewHolder1(View itemview){

             super(itemview);

              titel=itemview.findViewById(R.id.titel);

              titel2=itemview.findViewById(R.id.titel2);

          }

    }

    public class ViewHolder2 extends RecyclerView.ViewHolder{

        Banner banner;

        public ViewHolder2(View itemview){

            super(itemview);

            banner=itemview.findViewById(R.id.banner);

        }

    }

}

相關文章
相關標籤/搜索