优点

不需要每个列表都建立Adapter。

使用效果

Item点击事件使用的是自写的事件机制。

mListAdapter = new BaseListAdapter<PromotionsModel>(mView.getContext(), data, R.layout.promotion_list_item) {    @Override    public HashMap<String, Integer> GetViewList() {        HashMap<String, Integer> tmp = new HashMap<String, Integer>();        tmp.put("mainImage", R.id.item_image);        tmp.put("title", R.id.item_title);        tmp.put("desc", R.id.item_desc);        tmp.put("price", R.id.item_price);        tmp.put("yprice", R.id.item_yprice);        return tmp;    }    @Override    public void SetViewData(HashMap<String, View> viewList, PromotionsModel data) {        ImageView iv = (ImageView) viewList.get("mainImage");        ImageLoader.getInstance().displayImage(DataApis.FileDownloadUrl + data.extDataModel.breviaryImg, iv);        TextView tv = (TextView) viewList.get("title");        tv.setText(data.name);        tv.getPaint().setFakeBoldText(true);        tv = (TextView) viewList.get("desc");        tv.setText(data.extDataModel.shopName);        tv = (TextView) viewList.get("price");        tv.setText("¥" + Double.toString(data.money));        tv = (TextView) viewList.get("yprice");        tv.setText("¥" + Double.toString(data.extDataModel.originalPrice));        tv.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);    }};mListAdapter.OnItemClickEvent.addHandler(new EventHandle<PromotionsModel>() {    @Override    public void Handle(Object sender, PromotionsModel e) {        Intent intent = new Intent();        intent.setClass(mView.getContext(), DetailActivity.class);        Bundle bundle = new Bundle();        bundle.putString("Type", "Promotions");        bundle.putLong("DataKey", HostedBox.putData(e));        intent.putExtras(bundle);        startActivity(intent);    }});

实现

public abstract class BaseListAdapter<ModelType> extends BaseAdapter {    private Context mContext;    private LayoutInflater mInflater;    private int mTemplateLayoutId;    private List<ModelType> mItems;    public EventTrans<ModelType> OnItemClickEvent;    final public void clearItem() {        mItems.clear();    }    public BaseListAdapter(Context context, List<ModelType> items, int templateLayoutId) {        mContext = context;        mInflater = LayoutInflater.from(mContext);        mTemplateLayoutId = templateLayoutId;        mItems = items;        if (mItems == null) mItems = new ArrayList<ModelType>();        OnItemClickEvent = new EventTrans<ModelType>();    }    final public void addItem(ModelType item) {        mItems.add(item);    }    final public void removeItem(ModelType item) {        mItems.remove(item);    }    @Override    final public int getCount() {        return mItems.size();    }    @Override    final public Object getItem(int i) {        return mItems.get(i);    }    @Override    final public long getItemId(int i) {        return i;    }    public abstract HashMap<String, Integer> GetViewList();    public abstract void SetViewData(HashMap<String, View> viewList, ModelType data);    @Override    final public View getView(final int i, View view, ViewGroup viewGroup) {        final ViewHodler holder;        final ModelType model = mItems.get(i);        if (view == null) {            view = mInflater.inflate(mTemplateLayoutId, null);            view.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View view) {                    OnItemClickEvent.trigger(view, model);                }            });            holder = new ViewHodler();            HashMap<String, Integer> roll = GetViewList();            for (String key : roll.keySet()) {                holder.viewHashMap.put(key, view.findViewById(roll.get(key)));            }            view.setTag(holder);        } else {            holder = (ViewHodler) view.getTag();        }        SetViewData(holder.viewHashMap, model);        return view;    }    final private class ViewHodler {        HashMap<String, View> viewHashMap = new HashMap<String, View>();    }}

更多相关文章

  1. android点击手机返回键触发事件
  2. android home键点击事件处理
  3. Android TouchEvent事件传递机制
  4. Android监听事件
  5. Android RadioButton【单选按钮】的点击事件的两种方法
  6. Android中跟Touch事件
  7. Android TabHost每个Tab的Activity事件
  8. android响应事件的三种方式
  9. Android 05:点击事件的四种写法

随机推荐

  1. android 图片相关处理
  2. Android游戏开发学习(1)--android设置全
  3. Android(安卓)全局背景音乐
  4. Android属性设置大全
  5. Android基础:什么是Android?
  6. Error while executing process D:\Andr
  7. Android(安卓)Compatibility zoom dialog
  8. Android编译过程详解(二)
  9. Android(安卓)API Level对应Android版本
  10. Android(安卓)M 指纹框架