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);
        }
    }


}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值