package com.odoo.core.support.adapter;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.odoo.R;
import com.odoo.core.orm.ODataRow;
import com.odoo.core.orm.OModel;
import java.util.ArrayList;
import java.util.List;
/**
* Created by WangXM on 2016/6/1.
*/
public abstract class BaseRecyclerViewAdapter<VH extends RecyclerView.ViewHolder> extends RecyclerView.Adapter {
private static final int TYPE_ITEM = 0; //普通Item View
private static final int TYPE_FOOTER = 1; //顶部FootView
public static final int FOOTer_LOADING = 1;
public static final int FOOTER_LOAD_MORE = 2;
public static final int FOOTER_NO_ITEM = 0;
private int footerType = FOOTER_LOAD_MORE;
protected List<ODataRow> mList = new ArrayList<>();
protected Context mContext;
public BaseRecyclerViewAdapter(List<ODataRow> list, Context context) {
mList = list;
mContext = context;
}
public int getFooterType() {
return footerType;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == TYPE_ITEM) {
return onCreateMyViewHolder( parent, viewType);
} else {
View view = LayoutInflater.from(mContext).inflate(R.layout.item_recycleview_footer, parent, false);
FootHolder holder = new FootHolder(view);
return holder;
}
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if (position < mList.size()) {
onBindMyViewHolder((VH) holder,position);
} else {
if (footerType == FOOTER_LOAD_MORE)
((FootHolder) holder).tvContent.setText("上拉加载更多数据");
else if (footerType == FOOTER_NO_ITEM)
((FootHolder) holder).tvContent.setText("已经是最后一页,没有数据了");
else
((FootHolder) holder).tvContent.setText("正在加载更多数据。。。");
}
}
@Override
public int getItemCount() {
return mList.size() + 1;
}
@Override
public int getItemViewType(int position) {
if (position < mList.size()) {
return TYPE_ITEM;
} else {
return TYPE_FOOTER;
}
}
public void loading() {
this.footerType = FOOTer_LOADING;
notifyDataSetChanged();
}
public void addItem() {
this.footerType = FOOTER_LOAD_MORE;
notifyDataSetChanged();
}
public void addItemNoNext() {
this.footerType = FOOTER_NO_ITEM;
notifyDataSetChanged();
}
class FootHolder extends RecyclerView.ViewHolder {
public TextView tvContent;
public FootHolder(View itemView) {
super(itemView);
tvContent = (TextView) itemView.findViewById(R.id.tv_footer_context);
}
}
public abstract VH onCreateMyViewHolder(ViewGroup parent, int viewType);
public abstract void onBindMyViewHolder(VH holder, int position);
}
Android RecycleView上拉加载BaseAdapter(二)
最新推荐文章于 2021-05-25 19:16:06 发布