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);
}
}
}
RecyclerView實現多佈局
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.