介绍:使用FunDapter之后,你就无须为每一个视图创建对应的Adapter,这是一种新的创建adapter的自定义方法,无须创建ViewHolder就可以使用ViewHolder模式,不仅可以减少代码中bug,并且可以使代码更整洁。
以前我们使用Listview adapter 时,需要做:
- 继承BaseAdapter或者复制其他已经写过的Adapter
- 创建ViewHolder类并且定义所有View
- 写(复制.. 你TM还在骗自己!) 整个ViewHolder创建代码
- 写出所有 "findViewById" .
- 开始在getView方法里面填充数据
现在使用FunDapter,你只需要:
- 创建一个 BindDictionary
- 加入字段Add fields.
- 实例化一个新的FunDapter,补充完整BindDictionary, 布局源文件和列表项
接下来看看代码中的实现
1.创建一个对象Product,数据源public class Product {
public String title;
public String description;
public String imageUrl;
public double price;
}
2.创建一个BindDictionary实现:
BindDictionary<Product> dict = new BindDictionary<Product>();
3.加入基础的text字段:
(只需要提供text字段id,以前确认id对应对象Product的相应属性)
dict.addStringField(R.id.description,
new StringExtractor<Product>() {
@Override
public String getStringValue(Product item, int position) {
return item.description;
}
});
4.来一个高级功能:
(你能做一些更复杂的操作,比如设置字体(typeface()),加入visibilityIfNull() 则可以当属性为空时设置视图不可见.)
dict.addStringField(R.id.title,
new StringExtractor<Product>() {
@Override
public String getStringValue(Product item, int position) {
return item.title;
}
}).typeface(myBoldFace).visibilityIfNull(View.GONE);
5.什么,你需要加载图片,一样没问题:
(在StringExtractor里面返回对象Product的图片URL,你可以在loadDynamicImage里得到该URL与ImageView,并实现图片懒加载)
prodDict.addDynamicImageField(R.id.productImage,
new StringExtractor<Product>() {
@Override
public String getStringValue(Product item, int position) {
return item.imageUrl;
}
}, new DynamicImageLoader() {
@Override
public void loadDynamicImage(String url, ImageView view) {
//使用一些异步图片加载框架加载图上,比如Android-Universal-Image-Loader
}
});
6.最后,创建适配器:
FunDapter<Product> adapter = new FunDapter<Product>(getActivity(), productArrayList,
R.layout.product_list_item, dict);
大功告成,你只需要把该adapter添加到listView则可。
注:
该项目需要依赖一些文件,本人已打包成jar包(见博客附件),直接放到libs则可。
附上该框架github地址:
https://github.com/amigold/FunDapter
分享到:
相关推荐
传智播客_Andorid_Android基础视频video_第三天-第10节_10_listview入门.avi
react-native-sortable-listview, ListView的拖放功能包装,用于响应本机 react-native-sortable-listviewListView的拖放功能包装,用于响应本机。 拖动时允许拖放自动滚动行。将它添加到你的项目中运行 npm install...
Android-react-native-timeline-listview.zip,React本机应用程序的时间线组件,安卓系统是谷歌在2008年设计和制造的。操作系统主要写在爪哇,C和C 的核心组件。它是在linux内核之上构建的,具有安全性优势。
android-movies-demo手势交互的listview.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
这是一款基于 react-native,使用纯js编写得,同时支持android和ios得下拉刷新和上拉加载更多得控件 详细用法,请查看 https://github.com/remobile/react-native-refresh-infinite-listview 标签:react
商业编程-源码-如何更改其它程序 ListView 控件中某个 Item 的内容.zip
MVC-ListView-DataModel-master.zipMVC-ListView-DataModel-master.zipMVC-ListView-DataModel-master.zipMVC-ListView-DataModel-master.zipMVC-ListView-DataModel-master.zipMVC-ListView-DataModel-master....
listView伸缩实现,代码简洁易懂,可以直接拿来复用,不懂得可以到我博客上留言以及观看本章技术详解
listview控件功能扩展--自定义可编辑列ListViewCell[ListViewCell.rar]-精品源代码
android-custom-array-adapter-demo, Android演示如何使用定制适配器填充 ListView Android定制适配器演示这里示例演示如何使用自定义布局模板显示一个基于 array 数据源的ListView 。 在这种情况下,有一个 User ...
使用SimpleAdapter创建ListView
基于Eclipse开发平台,Android中使用ListView和三种适配器(ArrayAdaper,SimpleAdapter,BaseAdapter)实现数据的填充。
Android自定义adapter的listview代码
it's a normal Android listview adapter.The adapter extends BaseAdapter...
Flutter学习之旅(六)----ListView控件自定义Adapter以及带参数跳转,博客对应地址:http://blog.csdn.net/zhangxiangliang2/article/details/76383244
Android listview与adapter操作和用法
listView 滑动置顶漂浮。当ListVIew向上滑动是漂浮区到顶部就不动了.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。