Recyclerview的配置多個不同的item

package com.example.msi.mpage;

import android.content.Context;
import android.media.Image;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;

import com.example.msi.mpage.fragment.FristFragment;
import com.jude.rollviewpager.RollPagerView;
import com.jude.rollviewpager.adapter.StaticPagerAdapter;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class RecyclerAdapter extends RecyclerView.Adapter {

    private List<Map<String,Object>> Directlists ;
    private List<Map<String,Object>> Adlists ;
    private List<Map<String,Object>> Booklists;
    private String [] booknames =null;
    private int [] bookImages = null;
    private String [] Directions = null;
    private int [] rollImages = null;
    private Context context;
    public RecyclerAdapter(String [] booknames,int [] bookImages,String [] Directions,int [] rollImages,Context context) {
        this.booknames = booknames;
        this.bookImages = bookImages;
        this.Directions = Directions;
        this.rollImages = rollImages;
        this.context = context;
        Log.d("TAG", "RecyclerAdapter: "+bookImages.length);
        Log.d("tag", "RecyclerAdapter: "+booknames.length);
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = null;
        RecyclerView.ViewHolder holder = null;
        switch (viewType)
        {
            case R.layout.lunbo_item:
                view = LayoutInflater.from(parent.getContext()).inflate(R.layout.lunbo_item,parent,false);
                holder = new Rollpager(view);
                return  holder;

            case R.layout.direction_item:
                view = LayoutInflater.from(parent.getContext()).inflate(R.layout.direction_item,parent,false);
                holder = new Direction(view);
                return  holder;

            case R.layout.advertise_item:
                view = LayoutInflater.from(parent.getContext()).inflate(R.layout.advertise_item,parent,false);
                holder = new AdvertiseImage(view);
                return  holder;

            case  R.layout.booklist_item:
                view = LayoutInflater.from(parent.getContext()).inflate(R.layout.booklist_item,parent,false);
                holder = new Modules(view);
                return holder;
        }
//        view = LayoutInflater.from(parent.getContext()).inflate(R.layout.booklist_item,parent,false);
//        holder = new Modules(view);
        return holder;
    }

    @Override
    public int getItemViewType(int position) {
        if(position == 0)
        {
            return  R.layout.lunbo_item;
        }
        else if( position == 1)
        {
            return  R.layout.direction_item;
        }
        else if(position == 2)
        {
            return  R.layout.advertise_item;
        }
        else if( position == 3)
        {
            return R.layout.booklist_item;
        }
        else
        {
            return R.layout.booklist_item;
        }
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        if(holder instanceof  Rollpager)
        {
            Rollpager rollpager = (Rollpager)holder;
            //設置時間間隔
            rollpager.rollPagerView.setPlayDelay(6000);
            //設置透明度
            rollpager.rollPagerView.setAnimationDurtion(500);
            rollpager.rollPagerView.setAdapter(new TestNormalAdapter());

        }
        else if(holder instanceof  Direction)
        {
            Direction derectionholder = (Direction) holder;
            Directlists = new ArrayList<>();
            for(int i =0;i<Directions.length;i++)
            {
                Map<String,Object> map = new HashMap<>();
                map.put("image",R.mipmap.ic_launcher);
                map.put("name",Directions[i]);
                Directlists.add(map);
            }
            SimpleAdapter adapter = new SimpleAdapter(context,Directlists,R.layout.direction_son_item,
                    new String[]{"image","name"},
                    new int[]{R.id.directionimage,R.id.directiontext});
            derectionholder.gridView.setAdapter(adapter);
            derectionholder.gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    Toast.makeText(parent.getContext(),"sd"+position,Toast.LENGTH_SHORT).show();
                }
            });
        }
        else if(holder instanceof  AdvertiseImage)
        {
            AdvertiseImage adver = (AdvertiseImage) holder;
            Adlists = new ArrayList<>();
            for(int i =0;i<rollImages.length;i++)
            {
                Map<String,Object> map = new HashMap<>();
                map.put("image",rollImages[i]);
                Adlists.add(map);
            }
            SimpleAdapter adapter = new SimpleAdapter(context,Adlists,R.layout.advertise_son_item,
                    new String[]{"image"},
                    new int[]{R.id.HotadImage});
            adver.gridView1.setAdapter(adapter);

        }
        else if(holder instanceof  Modules)
        {
            Modules modules = (Modules) holder;
            Booklists = new ArrayList<>();
            for(int i =0;i<3;i++)
            {
                Map<String,Object> map = new HashMap<>();
                map.put("image",rollImages[i+1]);
                map.put("name",booknames[i]);
                map.put("bookname",booknames[i]);
                Booklists.add(map);
            }
            modules.Moduletext.setText(Directions[2]);
            modules.HimageView.setImageResource(rollImages[1]);
            SimpleAdapter adapter = new SimpleAdapter(context,Booklists,R.layout.booklist_son_item,
                    new String[]{"image","name","bookname"},
                    new int[]{R.id.bookdetailimage,R.id.bookname,R.id.bookdetail});
                    modules.gridView.setAdapter(adapter);
            modules.gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    Toast.makeText(parent.getContext(),"sd"+position,Toast.LENGTH_SHORT).show();
                }
            });
        }
    }

    @Override
    public int getItemCount() {
        return 14;
    }
    public static class Rollpager extends RecyclerView.ViewHolder
    {
        public RollPagerView  rollPagerView;
        public Rollpager(View itemView) {
            super(itemView);
            rollPagerView = (RollPagerView)itemView.findViewById(R.id.roll_view_pager);
        }
    }
    public static class Direction extends RecyclerView.ViewHolder
    {
        public GridView gridView;
        public TextView directname;
        public ImageView directImage;
        public Direction(View itemView) {
            super(itemView);
            gridView = (GridView)itemView.findViewById(R.id.RollPagerView);
            directname = (TextView)itemView.findViewById(R.id.directiontext);
            directImage =(ImageView)itemView.findViewById(R.id.directionimage);
        }
    }
    public static class AdvertiseImage extends  RecyclerView.ViewHolder
    {
        public TextView textView;
        public GridView gridView1;
        public  ImageView imageView;
        public AdvertiseImage(View itemView) {
            super(itemView);
            textView = (TextView)itemView.findViewById(R.id.HotText);
            gridView1 = (GridView)itemView.findViewById(R.id.HotAd);
            imageView =(ImageView)itemView.findViewById(R.id.HotadImage);
        }
    }
    public static class Modules extends RecyclerView.ViewHolder
    {
        public TextView Moduletext;
        public GridView gridView;
        public ImageView HimageView;
        public TextView listItem;
        public TextView bookname;
        public ImageView bookdetailimage;
        public Modules(View itemView) {
            super(itemView);
            Moduletext = (TextView)itemView.findViewById(R.id.ModuleText);
            gridView = (GridView)itemView.findViewById(R.id.bookdetail);
            HimageView = (ImageView)itemView.findViewById(R.id.horizenAD);
            listItem =(TextView)itemView.findViewById(R.id.listItem);
            bookname = (TextView)itemView.findViewById(R.id.bookname);
            bookdetailimage = (ImageView)itemView.findViewById(R.id.bookdetailimage);
        }
    }
    private class TestNormalAdapter extends StaticPagerAdapter
    {
        @Override
        public View getView(final ViewGroup container, final int position) {
            ImageView view  = new ImageView(container.getContext());
            view.setImageResource(rollImages[position]);
            view.setScaleType(ImageView.ScaleType.CENTER_CROP);
            view.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
//                    Toast.makeText(container.getContext(),"你點擊了"+(position+1),Toast.LENGTH_SHORT).show();
                }
            });

            return view;
        }
        @Override
        public int getCount() {
            return rollImages.length;
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章