RecyclerView實現多佈局

package com.example.administrator.app2;

import android.content.Context;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
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.ImageView;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;

/**
 * RecyclerView 實現多佈局
 */

public class MyActivity extends AppCompatActivity {
    private RecyclerView recyclerView;
    private List<Object> objects;

    private int[] image1_id = {R.mipmap.aa1, R.mipmap.aa2, R.mipmap.aa22, R.mipmap.aa3, R.mipmap.aa33,
            R.mipmap.aa4, R.mipmap.aa44, R.mipmap.aa5, R.mipmap.aa55, R.mipmap.aaaa};
    private int[] image2_id = {R.mipmap.bb1, R.mipmap.bb10, R.mipmap.bb11, R.mipmap.bb12, R.mipmap.bb13,
            R.mipmap.bb14, R.mipmap.bb15, R.mipmap.bb16, R.mipmap.bb17, R.mipmap.bb18, R.mipmap.bb2jpg, R.mipmap.bb3,
            R.mipmap.bb4, R.mipmap.bb5, R.mipmap.bb6, R.mipmap.bb7, R.mipmap.bb8, R.mipmap.bb9,};

    private final int COUNT = image2_id.length;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initView();


    }

    private void initView() {
        recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
        initData();
        //設置線性佈局管理器
        recyclerView.setLayoutManager(new LinearLayoutManager(this, RecyclerView.VERTICAL, false));
        //設置適配器
        recyclerView.setAdapter(new MyAdapter(this, objects));

    }

    private void initData() {

        objects = new ArrayList<Object>();
        //初始化集合(佈局的數據源)
        for (int i = 0; i < COUNT; i++) {
            objects.add(new YYY((i + 21), "楊鈺瑩" + (i + 1) + "號 "));
            objects.add(new MNK((i + 21), "莫妮卡貝魯奇" + (i + 1) + "號", BitmapFactory.decodeResource(getResources(), image2_id[i])));
        }
    }


    public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
        private LayoutInflater layoutInflater;
        private Context context;
        private List<Object> objects;
        private static final int AAA = 1;
        private static final int AAB = 2;


        public MyAdapter(Context context, List<Object> objects) {
            this.context = context;
            this.objects = objects;
            layoutInflater = LayoutInflater.from(context);
        }


        @Override//返回的int值傳到了onCreateViewHolder方法
        public int getItemViewType(int position) {
            Log.i("MyActivity", "-----------getItemViewType方法,position==" + position);
            return position % 2 == 0 ? AAA : AAB;
        }

        @Override//View對象(佈局)的數量
        public int getItemCount() {
            Log.i("MyActivity", "-----------getItemCount方法,objects的長度爲:" + objects.size());
            return objects == null ? 0 : objects.size();
        }

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

            Log.i("MyActivity", "-----------onCreateViewHolder方法,viewType==" + viewType);
            if (viewType == AAA) {//創建對應的View對象和ViewHolder對象
                return new YYYViewHolder(layoutInflater.inflate(R.layout.itme1, parent, false));
            } else if (viewType == AAB) {
                return new MNKViewHolder(layoutInflater.inflate(R.layout.itme2, parent, false));
            }
            return null;
        }

        @Override
        public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
            Object object = objects.get(position);

            if (holder instanceof YYYViewHolder) {
                YYY yyy = (YYY) object;
                YYYViewHolder yyyViewHolder = (YYYViewHolder) holder;
                yyyViewHolder.itme1_name.setText(yyy.name);
                yyyViewHolder.itme1_age.setText(yyy.age + "");

            } else if (holder instanceof MNKViewHolder) {
                MNK mnk = (MNK) object;
                MNKViewHolder mnkViewHolder = (MNKViewHolder) holder;
                mnkViewHolder.itme2_name.setText(mnk.name);
                mnkViewHolder.itme2_age.setText(mnk.age + "");
                mnkViewHolder.itme2_image.setImageBitmap(mnk.image);

            }
        }


    }

    //繼承RecyclerView.ViewHolder類,打造自己的控件打包類
    public static class YYYViewHolder extends RecyclerView.ViewHolder {
        public TextView itme1_name, itme1_age;//控件
        public YYYViewHolder(View itemView) {
            super(itemView);//找出控件
            itme1_name = (TextView) itemView.findViewById(R.id.itme1_name);
            itme1_age = (TextView) itemView.findViewById(R.id.itme1_age);
        }
    }

    public class MNKViewHolder extends RecyclerView.ViewHolder {
        public TextView itme2_name, itme2_age;
        public ImageView itme2_image;
        public MNKViewHolder(View itemView) {
            super(itemView);
            itme2_name = (TextView) itemView.findViewById(R.id.itme2_name);
            itme2_age = (TextView) itemView.findViewById(R.id.itme2_age);
            itme2_image = (ImageView) itemView.findViewById(R.id.itme2_image);
        }
    }


}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章