所有得逻辑操作都在adapter中
package com.example.myapplication;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import java.util.ArrayList;
/**
* Created by pw on 2019/2/26 19:35
* E-Mail Address: pw163.com
*/
public class RecycleViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private final ArrayList<Datas> datas;
private final MainActivity context;
private final LayoutInflater minflater;
private final static int ITEM_HEADER=0;
private final static int ITEM_CONTENT=1;
private final static int ITEM_FOOT=2;
/**
* 头布局和尾布局的数量
*/
private int mHeader=1;
private int mFoot=1;
public RecycleViewAdapter(ArrayList<Datas> arrayList, MainActivity mainActivity) {
this.datas = arrayList;
this.context = mainActivity;
minflater = LayoutInflater.from(context);
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {
if (viewType == ITEM_CONTENT){
View contentView = minflater.inflate(R.layout.item_recycle, viewGroup, false);
return new ViewHolder(contentView);
}
if (viewType == ITEM_HEADER){
View headerView = minflater.inflate(R.layout.item_head, viewGroup, false);
return new HeaderViewHdlder(headerView);
}
if (viewType == ITEM_FOOT){
View footView = minflater.inflate(R.layout.item_foot, viewGroup, false);
return new FootViewHolder(footView);
}
return null;
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int postion) {
if (viewHolder instanceof ViewHolder){
((ViewHolder)viewHolder).tv_name.setText(datas.get(postion-mHeader).getName());
((ViewHolder)viewHolder).tv_age.setText(datas.get(postion-mHeader).getAge()+"");
}
if (viewHolder instanceof FootViewHolder){
((FootViewHolder)viewHolder).tv_foot.setText("说啥呢啊");
((FootViewHolder)viewHolder).tv_foots.setText("哈哈哈");
}
}
@Override
public int getItemCount() {
return datas.size()+mHeader+mFoot;
}
@Override
public int getItemViewType(int position) {
if (mHeader != 0 && position<mHeader){
return ITEM_HEADER;
}
if (mFoot != 0 && position>=datas.size()+mHeader){
return ITEM_FOOT;
}
return ITEM_CONTENT;
}
class ViewHolder extends RecyclerView.ViewHolder{
TextView tv_name;
TextView tv_age;
public ViewHolder(@NonNull View itemView) {
super(itemView);
tv_name = itemView.findViewById(R.id.tv_names);
tv_age = itemView.findViewById(R.id.tv_ages);
}
}
class HeaderViewHdlder extends RecyclerView.ViewHolder{
public HeaderViewHdlder(@NonNull View itemView) {
super(itemView);
}
}
class FootViewHolder extends RecyclerView.ViewHolder{
private final TextView tv_foot;
private final TextView tv_foots;
public FootViewHolder(@NonNull View itemView) {
super(itemView);
tv_foot = itemView.findViewById(R.id.tv_foot);
tv_foots = itemView.findViewById(R.id.tv_foots);
}
}
}