对于新的控件,Recycleview,我这里封装了一套 加载更多的工具类,
Recycleview可以使用系统的,不用自定义,
adapter 只要 继承我的这个BaseRecycleAdapter 即可,
代码如下:
public abstract class BaseRecycleAdapter<T> extends RecyclerView.Adapter<RecyclerView.ViewHolder> { public List<T> mDatas = new ArrayList<T>(); private static final int TYPE_ITEM = 0; public final static int TYPE_HEADER = 1; private static final int TYPE_FOOTER = 2; private String footText="加载中..."; // RecyclerView的count设置为数据总条数+ 1(footerView) @Override public int getItemCount() { return mDatas.size() + 1; } @Override public int getItemViewType(int position) { // 最后一个item设置为footerView if (position + 1 == getItemCount()) { return TYPE_FOOTER; } else { return TYPE_ITEM; } } public void addData(T data) { mDatas.add(data); notifyDataSetChanged(); } public void addDatas(List<T> datas) { mDatas.addAll(datas); notifyDataSetChanged(); } public void clear() { mDatas.clear(); notifyDataSetChanged(); } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if (viewType == TYPE_ITEM) { return MyCreateViewHolder(parent, viewType); } // type == TYPE_FOOTER 返回footerView else if (viewType == TYPE_FOOTER) { View view = LayoutInflater.from(parent.getContext()).inflate( R.layout.footerview, null); view.setLayoutParams(new RecyclerView.LayoutParams(RecyclerView.LayoutParams.MATCH_PARENT, RecyclerView.LayoutParams.WRAP_CONTENT)); return new FooterViewHolder(view); } return null; } protected abstract RecyclerView.ViewHolder MyCreateViewHolder(ViewGroup parent, int viewType); @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { if (getItemViewType(position) == TYPE_ITEM) { MyBindViewHolder(holder, position); }else if(getItemViewType(position) == TYPE_FOOTER){ FooterViewHolder mHolder= (FooterViewHolder) holder; mHolder.footView.setText(footText); } } protected abstract void MyBindViewHolder(RecyclerView.ViewHolder holder, int position); //footview class FooterViewHolder extends RecyclerView.ViewHolder { private TextView footView; public FooterViewHolder(View view) { super(view); footView= (TextView) view.findViewById(R.id.foot_view); } } public void setFootText(String str){ footText=str; } }
几张效果图: