Android ListView,GridView的Adapter封装
2016-08-23 17:20
459 查看
这是一个对ListView,GridView Adapter 的 封装,
项目 地址: 点击打开链接
在 Android中 如果使用到了 ListView 或GridView 一定要 给其 添加 适配器Adapter
但 每次 写对应的 适配器时,其中很多方法都是 重复的 ,
所以我这个demo 将其封装了起来,使用的时候,只需继承 我封装的类,然后绑定 数据 就可以了
因为 每次使用Adapter的 时候 数据类型可能不同 ,所以 封装类 用到了泛型 并继承BaseAdapter
然后在 getView中如下:
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ViewHolder viewHolder = null;
if (view == null) {
view = LayoutInflater.from(context).inflate(layoutId, null);
viewHolder = new ViewHolder(view);
view.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) view.getTag();
}
// 调用 绑定 数据 方法
bindDatas(i, dataList.get(i), viewHolder);
return view;
}
// 用于 设置 每一个 条目 显示 的 数据
abstract void bindDatas(int position, T t, ViewHolder viewHolder);
其中有一个 子类 用于 操作 保存 每个Item的 控件
/**
* 通过 控件id 得到 listView item中 的 控件
*
* @param viewId
* @return View
*/
public View getView(int viewId) {
if (viewMap.get(viewId) == null) {
View viewById = viewGroup.findViewById(viewId);
viewMap.put(viewId, viewById);
}
return viewMap.get(viewId);
}
/**
* 获得 listView 每个 条目 的 父View
*
* @return
*/
public View getViewGroup() {
return viewGroup;
}
项目 地址: 点击打开链接
项目 地址: 点击打开链接
项目 地址: 点击打开链接
在 Android中 如果使用到了 ListView 或GridView 一定要 给其 添加 适配器Adapter
但 每次 写对应的 适配器时,其中很多方法都是 重复的 ,
所以我这个demo 将其封装了起来,使用的时候,只需继承 我封装的类,然后绑定 数据 就可以了
因为 每次使用Adapter的 时候 数据类型可能不同 ,所以 封装类 用到了泛型 并继承BaseAdapter
然后在 getView中如下:
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ViewHolder viewHolder = null;
if (view == null) {
view = LayoutInflater.from(context).inflate(layoutId, null);
viewHolder = new ViewHolder(view);
view.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) view.getTag();
}
// 调用 绑定 数据 方法
bindDatas(i, dataList.get(i), viewHolder);
return view;
}
// 用于 设置 每一个 条目 显示 的 数据
abstract void bindDatas(int position, T t, ViewHolder viewHolder);
其中有一个 子类 用于 操作 保存 每个Item的 控件
/**
* 通过 控件id 得到 listView item中 的 控件
*
* @param viewId
* @return View
*/
public View getView(int viewId) {
if (viewMap.get(viewId) == null) {
View viewById = viewGroup.findViewById(viewId);
viewMap.put(viewId, viewById);
}
return viewMap.get(viewId);
}
/**
* 获得 listView 每个 条目 的 父View
*
* @return
*/
public View getViewGroup() {
return viewGroup;
}
项目 地址: 点击打开链接
项目 地址: 点击打开链接
相关文章推荐
- Android SimpleAdapter显示ListView、GridView
- Android SimpleAdapter显示ListView、GridView
- Android中万能的BaseAdapter(Spinner,ListView,GridView)的使用!
- Android高手进阶教程(十六)之---Android中万能的BaseAdapter(Spinner,ListView,GridView)的使用!
- Android中适用于ListView、GridView等组件的通用Adapter
- Android SimpleAdapter显示ListView、GridView
- android Adapter综合使用(ArrayAdapter、SimpleAdapter、BaseAdapter在ListView和GridView中的使用)
- 【Android】以SimpleAdapter做适配器的ListView和GridView
- 【Android】以SimpleAdapter做适配器的ListView和GridView
- Android中适用于ListView、GridView等组件的通用Adapter
- Android SimpleAdapter显示ListView、GridView
- Android高手进阶教程(十六)之---Android中万能的BaseAdapter(Spinner,ListView,GridView)的使用!
- Android高手进阶教程(十六)之---Android中万能的BaseAdapter(Spinner,ListView,GridView)的使用!
- Android中ListView,Gallery,GridView 的适配器Adapter的使用
- Android高手进阶教程(十五)---Android中万能的BaseAdapter(Spinner,ListView,GridView)的使用!
- Android中万能的BaseAdapter(Spinner,ListView,GridView)的使用!
- Android高手进阶教程(十六)之---Android中万能的BaseAdapter(Spinner,ListView,GridView)的使用!
- Android高手进阶教程(十六)之---Android中万能的BaseAdapter(Spinner,ListView,GridView)的使用!
- Android中适用于ListView、GridView等组件的通用Adapter
- Android自定义ListView或GridView适配器Adapter的getView方法不执行的问题