介绍:使用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
分享到:
相关推荐
这个“安卓listview相关相关-一个简单的实现双listview共存demo”压缩包文件提供了实现两个ListView并排显示的示例,这对于构建复杂的用户界面,如显示不同类别的信息,或者在同一个屏幕中对比数据,非常有用。...
1. **ListView的基本用法**:ListView是Android中用于显示多行数据的视图,通过Adapter将数据源与视图进行绑定。开发者需要创建一个继承自BaseAdapter的自定义Adapter,并重写其中的`getView()`方法来定义每一项的...
4. **设置Adapter**: 在Activity中,找到ListView实例,然后调用`setAdapter()`方法,传入创建好的Adapter。 5. **监听事件**: 如果需要,可以设置点击事件监听器,例如,使用`.setOnItemClickListener()`方法为...
在Android开发中,ListView是展示大量数据的一种常见方式,而Adapter则是实现ListView数据绑定的关键组件。本篇文章将详细探讨Android中的Adapter用法及其在ListView中的应用。 1. **Adapter的概念** - `Adapter`...
Adapter需要重写`getView()`方法来创建和返回ListView的每一项视图。在这个例子中,可能会用到自定义Adapter来实现侧边栏和二级列表的交互效果。 2. **伪侧边栏**:在安卓应用中,侧边栏通常用于导航,但“伪侧边栏...
- 在自定义Adapter中,你需要为每个条目创建一个视图,包括正常的条目视图和可能的头部视图。头部视图的处理方式与普通条目不同,需要在正确的位置插入并处理其显示状态。 4. **布局管理(Layout Management)**...
为了实现更加灵活和丰富的界面展示,我们通常需要对ListView进行自定义,这涉及到自定义Adapter的使用。自定义Adapter允许我们根据需求定制ListView的每一项视图,以适应不同的数据结构和界面设计。 首先,我们需要...
本教程将围绕"安卓A-Z字母排序索引相关-拼音检索ListView实现拼音检索ListView的简单功能"这一主题展开,讲解如何实现这个功能。 首先,我们需要理解拼音检索的核心是将中文转换为对应的拼音,以便与A-Z字母表进行...
例如,如果你有一个`User`类,你可以创建一个`ArrayList<User>`,并将这个列表传递给Adapter。 4. **自定义Adapter步骤** - 创建一个持有数据的列表。 - 创建一个继承自BaseAdapter的自定义Adapter类,重写以下...
本教程将针对初学者,讲解如何使用ListView和Adapter来构建一个简单的列表。 首先,我们需要了解ListView的基本结构。ListView是一个视图容器,它可以动态加载并显示大量的子视图(ListView项)。这些子视图通常是...
同时,ListView的Adapter也需要进行相应的修改,以便在数据改变时通知ListView刷新视图。 在项目的实现中,可能还包括了一些额外的功能,如长按拖放(long press drag)、短路效果(shortcuts)等。长按拖放是指...
要让ListView显示数据,就需要用到Adapter和填充器(Filler)。这两个概念是理解Android列表视图工作原理的关键。 1. **Adapter**: - Adapter是连接数据源和ListView的桥梁,它负责将数据转化为ListView可以理解...
你需要重写`getView()`方法来为每个列表项创建视图,并根据数据集填充内容。此外,你可能还需要实现`getItemId()`和`getItemCount()`等方法,以便ListView知道如何正确地绑定数据和视图。 4. **触摸事件处理** ...
"pinterest-like-adapter-view-master"项目就是一个这样的示例,它展示了如何在Android中创建一个类似于Pinterest的多列ListView。下面将详细介绍其关键知识点: 1. **自定义Adapter**:在Android中,ListView的每...
在这个例子中,开发者可能创建了一个自定义的Adapter,继承自BaseAdapter或ArrayAdapter,用来将数据绑定到ListView的各个Item上。Adapter通常包含四个方法:getCount()、getItem()、getItemId()和getView(),其中...
在NewsListView项目中,我们可能需要创建一个自定义的Adapter,用于绑定新闻数据到ListView的各个视图。 3. **数据结构**: 在实现新闻列表时,首先需要一个合适的数据结构来存储新闻信息。这可能是ArrayList、...
- 在`getView()`方法中,你需要为外层ListView的每个item创建并添加内层ListView,同时为内层ListView设置适配器。 3. **自定义适配器**: - 对于复杂的数据结构,可能需要自定义适配器,继承自BaseAdapter或其它...
本教程将深入探讨如何使用SimpleAdapter和自定义Adapter与ListView协同工作,以实现数据的动态展示。以下是对相关知识点的详细说明: 1. **ListView**: ListView是Android中的一个视图容器,可以显示一系列可滚动的...
开发者需要提供一个Adapter,Adapter负责将数据绑定到ListView的各个视图(View)上。在这个项目中,Adapter可能会包含自定义的ViewHolder,以提高列表的滚动性能。 接着,要实现iOS风格的滑动效果,我们需要关注...
all-base-adapter Adapter 终结者 Adapter终结者,包含DataBinding,任意ViewGroup,Rv、Lv列表。写Adapter,有它就够了 Some base Adapters apply to any ViewGroup. Such as LinearLayout, ScrollView, and ...