FunDapter--让你简单创建ListView Adapter

[color=red][size=medium]介绍:使用FunDapter之后,你就无须为每一个视图创建对应的Adapter,这是一种新的创建adapter的自定义方法,无须创建ViewHolder就可以使用ViewHolder模式,不仅可以减少代码中bug,并且可以使代码更整洁。[/size][/color]


[b][size=medium]以前我们使用Listview adapter 时,需要做:[/size][/b][list]
[*]继承BaseAdapter或者复制其他已经写过的Adapter
[*]创建ViewHolder类并且定义所有View
[*]写(复制.. 你TM还在骗自己!) 整个ViewHolder创建代码
[*]写出所有 "findViewById" .
[*]开始在getView方法里面填充数据
[/list]
[b][size=medium]现在使用FunDapter,你只需要:[/size][/b][list]
[*]创建一个 BindDictionary
[*]加入字段Add fields.
[*]实例化一个新的FunDapter,补充完整BindDictionary, 布局源文件和列表项
[/list]

接下来看看代码中的实现
[size=medium][color=blue]1.创建一个对象Product,数据源[/color][/size]
public class Product {

public String title;
public String description;
public String imageUrl;
public double price;
}


[color=blue][size=medium]2.创建一个BindDictionary实现:[/size][/color]
BindDictionary<Product> dict = new BindDictionary<Product>();


[color=blue][size=medium]3.加入基础的text字段:[/size][/color]
(只需要提供text字段id,以前确认id对应对象Product的相应属性)
dict.addStringField(R.id.description,
new StringExtractor<Product>() {

@Override
public String getStringValue(Product item, int position) {
return item.description;
}
});


[color=blue][size=medium]4.来一个高级功能:[/size][/color]
(你能做一些更复杂的操作,比如设置字体(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);


[color=blue][size=medium]5.什么,你需要加载图片,一样没问题:[/size][/color]
(在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
}

});


[color=blue][size=medium]6.最后,创建适配器:[/size][/color]
FunDapter<Product> adapter = new FunDapter<Product>(getActivity(), productArrayList,
R.layout.product_list_item, dict);


大功告成,你只需要把该adapter添加到listView则可。

注:
该项目需要依赖一些文件,本人已打包成jar包(见博客附件),直接放到libs则可。
附上该框架github地址:[url]https://github.com/amigold/FunDapter[/url]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值