炒鸡牛鼻BaseAdapter范例

关于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);
        }
    }
}







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值