关于adapter 网上有好多例子, 话不多说,上例子
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.util.Log;
import android.util.SparseArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import java.util.ArrayList;
import java.util.List;
public abstract class LmBaseAdapter<T> extends BaseAdapter {
private String TAG;
public Activity context;
private LayoutInflater inflater;
public List<T> list;
public View view;
protected ImageLoader imageLoader = ImageLoader.getInstance();
DisplayImageOptions options;
public int w;
public int h;
/* 尖括号里面的就是adapter中的实体 */
public LmBaseAdapter(Activity context, List<T> list) {
this.context = context;
TAG = this.getClass().getSimpleName();
this.list = list;
if (this.list == null)
this.list = new ArrayList<T>();
w = context.getWindowManager().getDefaultDisplay().getWidth();
h = context.getWindowManager().getDefaultDisplay().getHeight();
inflater = this.context.getLayoutInflater();
}
public void setList(List<T> list) {
this.list = list;
if (this.list == null)
this.list = new ArrayList<T>();
notifyDataSetChanged();
}
public void addList(List<T> list){
if(list==null||list.size()==0)
return;
this.list.addAll(list);
notifyDataSetChanged();
}
@Override
public int getCount() {
return this.list.size();
}
@Override
public Object getItem(int position) {
return this.list.get(position);
}
public View initConvertView(int resource) {
return inflater.inflate(resource, null);
}
@Override
public long getItemId(int position) {
return position;
}
public void log(String log) {
Log.i(TAG, log);
}
public abstract int getItemResourceId();
public abstract void initItemView(PxViewHolder viewHolder, List<T> list,
int position);
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final PxViewHolder viewHolder = PxViewHolder.get(context, convertView,
parent, getItemResourceId(), position);
// initItemView(viewHolder, getItem(position),list,position);
initItemView(viewHolder, list, position);
return viewHolder.getConvertView();
}
public static class PxViewHolder {
private final SparseArray<View> mViews;
private int mPosition;
private View mConvertView;
private PxViewHolder(Context context, ViewGroup parent, int layoutId,
int position) {
this.mPosition = position;
this.mViews = new SparseArray<View>();
mConvertView = LayoutInflater.from(context).inflate(layoutId,
parent, false);
mConvertView.setTag(this);
}
public static PxViewHolder get(Context context, View convertView,
ViewGroup parent, int layoutId, int position) {
if (convertView == null) {
return new PxViewHolder(context, parent, layoutId, position);
}
return (PxViewHolder) convertView.getTag();
}
public View findViewById(int viewId) {
return mConvertView.findViewById(viewId);
}
public View getConvertView() {
return mConvertView;
}
public <T extends View> T getView(int viewId) {
View view = mViews.get(viewId);
if (view == null) {
view = mConvertView.findViewById(viewId);
mViews.put(viewId, view);
}
return (T) view;
}
public int getPosition() {
return mPosition;
}
}
}
代码看起来挺复杂的,不过使用起来非常简单,下面上一个简单的例子
public class SearchHistoryAdapter extends LmBaseAdapter<String> /* 尖括号里面的就是adapter中的实体 */{
boolean isIn;
public SearchHistoryAdapter(Activity context, List<String> list,boolean isIn) {
super(context, list);
this.list = list;
this.isIn = isIn;
}
@Override
public int getCount() {
return list.size();
}
public void clean() {
list.clear();
}
public void refrashAdapter(List<String> data) {
list.addAll(data);
notifyDataSetChanged();
}
@Override
public int getItemResourceId() {
return R.layout.item_history_list;
}
@Override
public void initItemView(PxViewHolder viewHolder, final List<String> list, final int position) {
if (position == list.size() - 1) {
viewHolder.<TextView>getView(R.id.text_item_history_list).setText(list.get(position));
viewHolder.<TextView>getView(R.id.clean_history_store).setVisibility(View.VISIBLE);
viewHolder.<TextView>getView(R.id.clean_history_store).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
clean();
if(isIn){
PxCacheData.setCacheSearchHistoryIn(context, PxCacheData.getUser(context).getUserId(), (ArrayList<String>) list);
}else{
PxCacheData.setCacheSearchHistory(context, PxCacheData.getUser(context).getUserId(), (ArrayList<String>) list);
}
notifyDataSetChanged();
}
});
} else {
viewHolder.<TextView>getView(R.id.text_item_history_list).setText(list.get(position));
viewHolder.<TextView>getView(R.id.clean_history_store).setVisibility(View.GONE);
}
}
}