`
大头K
  • 浏览: 186815 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

FunDapter--让你简单创建ListView Adapter

阅读更多
介绍:使用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
1
0
分享到:
评论

相关推荐

    安卓listview相关相关-一个简单的实现双listview共存demo.rar

    这个“安卓listview相关相关-一个简单的实现双listview共存demo”压缩包文件提供了实现两个ListView并排显示的示例,这对于构建复杂的用户界面,如显示不同类别的信息,或者在同一个屏幕中对比数据,非常有用。...

    安卓listview相关相关-android-movies-demo手势交互的listview.rar

    1. **ListView的基本用法**:ListView是Android中用于显示多行数据的视图,通过Adapter将数据源与视图进行绑定。开发者需要创建一个继承自BaseAdapter的自定义Adapter,并重写其中的`getView()`方法来定义每一项的...

    Android中ListView+Adapter

    4. **设置Adapter**: 在Activity中,找到ListView实例,然后调用`setAdapter()`方法,传入创建好的Adapter。 5. **监听事件**: 如果需要,可以设置点击事件监听器,例如,使用`.setOnItemClickListener()`方法为...

    Android listview与adapter用法

    在Android开发中,ListView是展示大量数据的一种常见方式,而Adapter则是实现ListView数据绑定的关键组件。本篇文章将详细探讨Android中的Adapter用法及其在ListView中的应用。 1. **Adapter的概念** - `Adapter`...

    安卓listview相关相关-伪侧边栏伪二级ListView.rar

    Adapter需要重写`getView()`方法来创建和返回ListView的每一项视图。在这个例子中,可能会用到自定义Adapter来实现侧边栏和二级列表的交互效果。 2. **伪侧边栏**:在安卓应用中,侧边栏通常用于导航,但“伪侧边栏...

    安卓listview相关相关-listView滑动置顶漂浮。当ListVIew向上滑动是漂浮区到顶部就不动了.rar

    - 在自定义Adapter中,你需要为每个条目创建一个视图,包括正常的条目视图和可能的头部视图。头部视图的处理方式与普通条目不同,需要在正确的位置插入并处理其显示状态。 4. **布局管理(Layout Management)**...

    Android自定义adapter的listview

    为了实现更加灵活和丰富的界面展示,我们通常需要对ListView进行自定义,这涉及到自定义Adapter的使用。自定义Adapter允许我们根据需求定制ListView的每一项视图,以适应不同的数据结构和界面设计。 首先,我们需要...

    安卓A-Z字母排序索引相关-拼音检索ListView实现拼音检索ListView的简单功能.rar

    本教程将围绕"安卓A-Z字母排序索引相关-拼音检索ListView实现拼音检索ListView的简单功能"这一主题展开,讲解如何实现这个功能。 首先,我们需要理解拼音检索的核心是将中文转换为对应的拼音,以便与A-Z字母表进行...

    安卓listview相关相关-ListView通过adapter传递对象.rar

    例如,如果你有一个`User`类,你可以创建一个`ArrayList&lt;User&gt;`,并将这个列表传递给Adapter。 4. **自定义Adapter步骤** - 创建一个持有数据的列表。 - 创建一个继承自BaseAdapter的自定义Adapter类,重写以下...

    最简单listview + adapter

    本教程将针对初学者,讲解如何使用ListView和Adapter来构建一个简单的列表。 首先,我们需要了解ListView的基本结构。ListView是一个视图容器,它可以动态加载并显示大量的子视图(ListView项)。这些子视图通常是...

    android-drag-and-drop-listview:Android 拖放 ListView

    同时,ListView的Adapter也需要进行相应的修改,以便在数据改变时通知ListView刷新视图。 在项目的实现中,可能还包括了一些额外的功能,如长按拖放(long press drag)、短路效果(shortcuts)等。长按拖放是指...

    ListView中Adapter、填充器

    要让ListView显示数据,就需要用到Adapter和填充器(Filler)。这两个概念是理解Android列表视图工作原理的关键。 1. **Adapter**: - Adapter是连接数据源和ListView的桥梁,它负责将数据转化为ListView可以理解...

    安卓listview相关相关-仿知乎滑动删除可撤销Listview.zip

    你需要重写`getView()`方法来为每个列表项创建视图,并根据数据集填充内容。此外,你可能还需要实现`getItemId()`和`getItemCount()`等方法,以便ListView知道如何正确地绑定数据和视图。 4. **触摸事件处理** ...

    pinterest-like-adapter-view-master瀑布流

    "pinterest-like-adapter-view-master"项目就是一个这样的示例,它展示了如何在Android中创建一个类似于Pinterest的多列ListView。下面将详细介绍其关键知识点: 1. **自定义Adapter**:在Android中,ListView的每...

    安卓listview相关相关-使用AndroidAnnotations框架优雅地实现ListView功能例子源代码.rar

    在这个例子中,开发者可能创建了一个自定义的Adapter,继承自BaseAdapter或ArrayAdapter,用来将数据绑定到ListView的各个Item上。Adapter通常包含四个方法:getCount()、getItem()、getItemId()和getView(),其中...

    Android实现的ListView-ListViewAdapter(新闻列表事例)

    在NewsListView项目中,我们可能需要创建一个自定义的Adapter,用于绑定新闻数据到ListView的各个视图。 3. **数据结构**: 在实现新闻列表时,首先需要一个合适的数据结构来存储新闻信息。这可能是ArrayList、...

    嵌套LISTVIEW嵌套adapter

    - 在`getView()`方法中,你需要为外层ListView的每个item创建并添加内层ListView,同时为内层ListView设置适配器。 3. **自定义适配器**: - 对于复杂的数据结构,可能需要自定义适配器,继承自BaseAdapter或其它...

    5-ListView-SimpleAdapter及自定义Adapter-进阶2.rar

    本教程将深入探讨如何使用SimpleAdapter和自定义Adapter与ListView协同工作,以实现数据的动态展示。以下是对相关知识点的详细说明: 1. **ListView**: ListView是Android中的一个视图容器,可以显示一系列可滚动的...

    安卓listview相关相关-高仿ios消息列表滑动效果listview.rar

    开发者需要提供一个Adapter,Adapter负责将数据绑定到ListView的各个视图(View)上。在这个项目中,Adapter可能会包含自定义的ViewHolder,以提高列表的滚动性能。 接着,要实现iOS风格的滑动效果,我们需要关注...

    Android代码-all-base-adapter

    all-base-adapter Adapter 终结者 Adapter终结者,包含DataBinding,任意ViewGroup,Rv、Lv列表。写Adapter,有它就够了 Some base Adapters apply to any ViewGroup. Such as LinearLayout, ScrollView, and ...

Global site tag (gtag.js) - Google Analytics