废话不多说,先上图一个匿名内部类,一个适配器完成+两项listview优化
注:holder.setText()是把取view操作提取而已,如果需要操作imageview添加个 setImageView即可
so easy!
想要跟上面代码一样简单,ok 导入我的两个类
至于两个类怎么写的,稍微花下时间看下,应该就明白
类1 ViewHodler.java
package com.zhuimore.iqzone.adapter.base; import android.content.Context; import android.util.SparseArray; import android.view.View; import android.widget.TextView; public class ViewHolder { private View mConvertView; //对于key和valse为int、Obj的 用SparseArray比map效率高 private SparseArray<View> mViews = new SparseArray<View>(); public ViewHolder() { } public void init(Context context, int layoutId, View convertView) { if (convertView == null) { convertView = View.inflate(context, layoutId, null); convertView.setTag(this); this.mConvertView = convertView; } } public View getView(int viewId) { View v = mViews.get(viewId); if (v == null) { v = mConvertView.findViewById(viewId); } return v; } public View getConvertView() { return mConvertView; } public ViewHolder setText(int viewId, String content) { TextView v = (TextView) mViews.get(viewId); if (v == null) { v = (TextView) mConvertView.findViewById(viewId); } v.setText(content); return this; } }类2 AdapterBestBase.java
package com.zhuimore.iqzone.adapter.base; import java.util.List; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; public abstract class AdapterBestBase<T> extends BaseAdapter { public Context mContext; public List<T> mList; public ViewHolder holder; public int layoutId; public AdapterBestBase(Context context, int layoutId, List<T> mList) { this.mContext = context; this.mList = mList; this.layoutId = layoutId; //一个adapter 一个holder holder = new ViewHolder(); } public List<T> getList() { return mList; } public void appendToList(List<T> list) { if (list == null) { return; } mList.addAll(list); notifyDataSetChanged(); } public void appendToTopList(List<T> list) { if (list == null) { return; } mList.addAll(0, list); notifyDataSetChanged(); } public void appendT(T object) { if (object == null) { return; } mList.add(object); notifyDataSetChanged(); } public void removeT(T object) { if (object == null) { return; } mList.remove(object); notifyDataSetChanged(); } public void clear() { mList.clear(); notifyDataSetChanged(); } @Override public int getCount() { return mList.size(); } @Override public T getItem(int position) { if (position > mList.size() - 1) { return null; } return mList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { //检测convertView holder.init(mContext, layoutId, convertView); //回调 getExView(holder, getItem(position)); return holder.getConvertView(); } protected abstract void getExView(ViewHolder holder, T t); }
原文:http://blog.csdn.net/u013134391/article/details/45891989