12,对ListView的适配器的封装BaseListAdapter
2017-03-05 14:20
387 查看
实现的思路
1,BaseAdapter 的分析 1,构造方法 需要传递一个泛型的集合,并使用之成员化 使用泛型,要在类名中声明该泛型 2,getCount 对集合进行非空判断,并返回mData.size() 3,getItem 对集合进行非空判断,并返回mData.get(position); 4,getItemId 直接返回position 5,getView view方面: onCreateViewHolder(position); view+data方面: onBindViewHolder(viewHolder,position); 6,ViewHolder的定义 只需要在构造方法,将传递的视图成员化
实现的代码
package com.example.guixin.oschina.base; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import java.util.List; /** * Author: 归零 * Date: 2017/3/5 2:06 * Email: 4994766@qq.com * Description: */ public abstract class BaseListAdapter<ITEMBEAN> extends BaseAdapter { private List<ITEMBEAN> mData; public BaseListAdapter(List<ITEMBEAN> data) { mData = data; } @Override public int getCount() { return mData == null ? 0 : mData.size(); } @Override public Object getItem(int position) { return mData == null ? null : mData.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder = null; if (convertView == null) { viewHolder = onCreateViewHolder(position); viewHolder.mView.setTag(viewHolder); }else { viewHolder = (ViewHolder) convertView.getTag(); } onBindViewHolder(viewHolder,position); return viewHolder.mView; } /** * 决定视图与数据的绑定 * 在基类中不知道onBindViewHolder的具体实现 * 交给子类:必须实现 * @param viewHolder * @param position */ protected abstract void onBindViewHolder(ViewHolder viewHolder, int position); /** * 决定绑定的视图 * 在基类中不知道onCreateViewHolder的具体实现 * 交给子类:必须实现 * @param position * @return */ protected abstract ViewHolder onCreateViewHolder(int position) ; public class ViewHolder{ public View mView; public ViewHolder(View view) { mView = view; } } }
相关文章推荐
- Android学习第五天————ExpandableListView组件通过适配器BaseExpandableListAdapter实现两层列表项
- android listview继承BaseAdapter,自定义的适配器,getView方法执行多组循环解决方式
- listview适配器Baseadapter
- 自学安卓复习基础_之十(使用适配器BaseAdapter来实现listView的CRD)
- android之expandableListView+BaseExpandableListAdapter+ArrayList伸缩的用法:
- Android 对ListView和RecyclerView的两个BaseAdapter封装分享
- ListView 的三种适配器 BaseAdapter ArrayAdapter SimpleAdapter(2)
- Android ExpandableListView 进行二级扩展 (BaseExpandableListAdapter)
- ListView (3) 之适配器 ArrayAdapter/SimpleAdapter/BaseAdapter
- listView适配器之BaseAdapter详解
- Android开发之ExpandableListView扩展(BaseExpandableListAdapter的使用)(完整版)
- PullToRefreshExpandableListView 和BaseExpandableListAdapter
- ExpandableListView(手风琴)(1)---BaseExpandableListAdapter
- ListView 的三种适配器 BaseAdapter ArrayAdapter SimpleAdapter(3)
- ExpandableListView以及BaseExpandableListAdapter的基本使用
- 自定义ListView适配器继承BaseAdapter
- ListView适配器BaseAdapter
- Android适配器之基于BaseAdapter定义AbslistView万能适配器
- Android组件ListView的适配器BaseAdapter
- 【Android】以BaseAdapter做适配器的ListView及其性能优化