ListView之Adapter的复用
来源:互联网 发布:erp软件二次开发 编辑:程序博客网 时间:2024/06/08 12:02
Adapter之ListView的复用
- 作用:优化空间节省使用内存
1.初始化数据
不管是那种复用都需要用到Adapter这个类,所以我们先新建一个类(MyAdapter)去继承Adapter同事重写Adapter的四个方法.
代码如下↓
1 新建MyAdapter类
public class MyAdapter extends BaseAdapter { //返回item的数量 @Override public int getCount() { return 0; } //返回第 i 个item @Override public Object getItem(int i) { return null; } //有多少个item @Override public long getItemId(int i) { return 0; } //加载布局. @Override public View getView(int i, View view, ViewGroup viewGroup) { return null; }}
2.初始化数据
- 我们知道Adapter不管是不是做复用,都需要有数据,那么我们下一步就传入所需要的数据;
//初始化上下文(构造方法传入) private Context context; //初始化一个集合,作用是装数据(构造方法传入) private List<MyData> myDataList; //初始化实体类 private MyData MyData = new MyData(); //初始化布局管理器 private LayoutInflater inflater; public ListViewAdapter(Context context, List<MyData> myDataList) { // Context 和 List 通过构造方法传入 this.context = context; this.myDataList = myDataList; //通过上下文去获得系统的布局管理器 inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); }
3.初始化实体类.
public class MyData { private String title ; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; }}
- #### 这里的实体类只有一个title 根据你自己需要的内容需要自己定义 ,生成getSet方法.
4.在getView()方法中向item中设载入布局
@Override public View getView(int i, View view, ViewGroup viewGroup) { ViewHolder viewHolder; //1.复用的第一步,先判断view是为空,如果是空的,就加载布局,填入内容 if (view == null) { //3.创建完ViewHolder后初始化ViewHolder viewHolder = new ViewHolder(); //2.如果view是空的,直接填入内容,item完成后就可以创建ViewHolder了. view = inflater.inflate(R.layout.my_item, null); //4.将item中的view传递给ViewHolder viewHolder.tv_title = view.findViewById(R.id.title_item); //5.设置Tag(); 相当于给每一个item条目做标记,放入容器中 下次拿出来直接用 view.setTag(viewHolder); } else { //6.这个时候ViewHolder都是有值的了,就把刚才用过的item那出来复用. viewHolder = (ViewHolder) view.getTag(); } //7.取出每个条目 myData = myDataList.get(i); //8.设置复用后的值 viewHolder.tv_title.setText(myData.getTitle()); return view; }
5.创建ViewHolder
class ViewHolder { //初始化view TextView tv_title; }
6.在MainActivity中使用
//创建AdapterMyAdapter adapter = new MyAdapter(this,myDataList); //在ListView控件上设置adapter mListView.setAdapter(adapter);
- #### 结语:本文如果有错请指正!
阅读全文
0 0
- ListView之Adapter的复用
- Android之ListView的Adapter的复用
- listview之adapter的优化
- Android之自定义Adapter的ListView
- 【转】Android之自定义Adapter的ListView
- Android之自定义Adapter的ListView
- ListView的Adapter使用 之 初学ArrayAdapter
- Android之自定义Adapter的ListView
- Android之自定义Adapter的ListView
- Android之自定义Adapter的ListView
- [转载]Android之自定义Adapter的ListView
- Android之自定义Adapter的ListView
- Android之自定义Adapter的ListView
- android之ListView的Adapter使用
- Android之自定义Adapter的ListView
- 【转】Android之自定义Adapter的ListView
- Android之自定义Adapter的ListView
- 【转】Android之自定义Adapter的ListView
- 时间复杂度详解
- MVC模式(一)
- C语言程序 显示当天日期
- 微信分享链接的缩略图和标题
- 树- 并查集
- ListView之Adapter的复用
- TensorFlow入门教程(3)
- Hadoop NameNode 高可用 (High Availability) 实现解析
- PyQt4-入门学习(2)
- 关键字
- Dialog、Toast的Window和ViewRootImpl
- unity 中 随机(伪随机) 数
- 使用IDEA创建一个Axis Sample
- 理解PHP 依赖注入|Laravel IoC容器