通用Adapter,完成对LisetView的优化抽取
来源:互联网 发布:免费下载淘宝网2017 编辑:程序博客网 时间:2024/06/18 08:47
//该适配器实现了ListView条目的复用以及控件的复用,不需要再每次getitem时候再找控件与布局
package ;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.RadioButton;import android.widget.TextView;import ;/** * Created by Liz on 2016/5/6. * 实现了listView的优化 */public abstract class MyBaseAdapter extends BaseAdapter { //实现了listView的优化 public ViewHolder holder = null; @Override public abstract int getCount(); @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { return initView(position, convertView, parent); } //回调init、setLayoutId public View initView(int position, View convertView, ViewGroup parent) { int layoutId = setLayoutId(); if (convertView == null) { convertView = View.inflate(BaseApplication.getInstance(), layoutId, null); holder = new ViewHolder(); bindHolder(convertView); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag();// Log.e("```````","复用了"); } return setWidget(position, convertView, parent); } //回调setHolder public void bindHolder(View convertView) { setHolder(convertView);//把getView的converView传递给Holder } //子类实现用以设置控件UI,返回convertView,返回值不能为空,为convertView public abstract View setWidget(int position, View convertView, ViewGroup parent); //子类找到自己的控件并设置给ViewHolder,convertView是getView传递下来的convertView,负责传参,用convertView.findViewById(); public abstract void setHolder(View convertView); //返回Adapter所在的View的Id public abstract int setLayoutId(); //添加自己的控件类型 public class ViewHolder { public ImageView img_01; public ImageView img_02; public TextView tv_01; public TextView tv_02; public TextView tv_03; public TextView tv_04; public TextView tv_05; public TextView tv_06; public RadioButton rb_01; }}//实例class GetCouponAdapter extends MyBaseAdapter { @Override public int getCount() { return coupon_infos.size(); } @Override public View setWidget(int position, View convertView, ViewGroup parent) { holder.tv_01.setText(coupon_infos.get(position).getCup_amount()); holder.tv_02.setText(coupon_infos.get(position).getCup_name()); return convertView; } @Override public void setHolder(View convertView) { holder.tv_01 = (TextView) convertView.findViewById(R.id.m_count); holder.tv_02 = (TextView) convertView.findViewById(R.id.goods_name; } @Override public int setLayoutId() { return R.layout.item_getcoupon; }}
1 0
- 通用Adapter,完成对LisetView的优化抽取
- 对RecycleView的adapter的抽取
- android对adapter的优化
- ListView的优化使用-抽取ViewHolder以及adapter类
- RecyclerView通用适配器Adapter,对Adapter的封装
- RecyclerView的Adapter的抽取
- 200.m1-优化抽取Adapter一之抽取BaseAdapter
- 201.m1-优化抽取Adapter二之抽取ViewHolder
- 自定义Adapter中对ListView的优化
- Android优化之通用Adapter
- 通用的adapter
- 通用的Adapter
- 通用Adapter的尝试
- 打造通用的Adapter
- 25.通用service的抽取
- ListView和GridView的adapter的抽取
- Android MVP+Adapter+ViewHolder抽取-ListView最终优化
- Adapter优化(二)通用ViewHolder
- std::map 使用注意事项
- 企业网站如何选择合适的虚拟主机?
- java中stringBuilder的用法
- xcode 快捷键
- iOS 基于 MVC 的项目重构总结
- 通用Adapter,完成对LisetView的优化抽取
- sql优化见解
- LruCache源码解析
- 写出smarty模板的特点
- 我的大学毕业设计
- android自定义控件学习【1】----自定义卡券View
- matlab 神经网络做回归预测
- java project 项目在 linux 下面部署步骤
- volatile的使用含义