优点

不需要每个列表都建立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. Easyui columns列图片移位问题!!!
  2. output和returnvalue的作用
  3. 9.openssl ca
  4. JavaScript 常用算法
  5. php根据IP地址跳转对应的城市,淘宝REST api调用地址直接使用
  6. 8、C#基础整理(数组和冒泡排序)
  7. 访问Github过慢解决
  8. BZOJ 1613: [Usaco2007 Jan]Running贝茜的晨练计划( dp)
  9. richedit设置滚动条的位置和更新内容
  10. protobuf中的枚举缺省值应该为UNKNOWN
  11. DNS域名解析过程,域名的认识
  12. PS中如何提高修改psd图片的效率(自动选择工具)
  13. 关于scrapy
  14. logstash 切分tomcat日志
  15. 构建器Constructor的返回值/构建器
  16. Angular6 项目开发常用时间组件服务
  17. Nginx 部署多个 web 项目(虚拟主机)
  18. Win7开机卡在Windows Update 35%的解决办法
  19. (七)dubbo服务集群实现负载均衡
  20. linq to sql语句中转换数据类型和日期操作

热门文章

  1. In-Memory:在内存中创建临时表和表变量
  2. 在SQL2008查找某数据库中的列是否存在某个值
  3. Jquery mobiscroll 移动设备(手机)wap日期时间选择插件以及滑动、滚动插件
  4. [C#] C# 知识回顾 - 特性 Attribute
  5. 声音分贝的概念,dBSPL.dBm,dBu,dBV,dBFS
  6. css text-fill-color与text-stroke讲解
  7. 如何用Java类配置Spring MVC(不通过web.xml和XML方式)
  8. python之最强王者(9)——函数
  9. Linux基础介绍【第八篇】
  10. python性能检测工具整理