使用通用适配器Base-adapter-helper

适配器写多了会有一种写到吐的感觉,今天来体验一下不用写适配器等待感觉,一般来说,我们写适配器都是重写getView方法,然后使用ViewHolder设计模式,在getView里进行数据绑定,写一次还好,写多了会感觉在不断做重复工作,那么有没有这么一个通用的适配器供我们使用,而不用写那么多次重复代码呢,答案是有的,见https://github.com/JoanZapata/base-adapter-helper,今天就使用一下这个适配器。

在这之前,先看下实现效果。

开始编写实体类,涉及到的就是标题,描述,以及图片资源

package cn.edu.zafu.demo;

public class News {
    private String title;
    private String description;
    private int imgId;

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public int getImgId() {
        return imgId;
    }

    public void setImgId(int imgId) {
        this.imgId = imgId;
    }

    @Override
    public String toString() {
        return "News [title=" + title + ", description=" + description
                + ", imgId=" + imgId + "]";
    }

}

对应的布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    tools:context="${relativePackage}.${activityClass}" >

    <ImageView
        android:id="@+id/img"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:layout_centerVertical="true"
        android:layout_marginLeft="5dp"
        android:background="@drawable/ic_launcher" />

    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"
        android:layout_marginTop="5dp"
        android:layout_toRightOf="@id/img"
        android:text="标题标题标题标题标标题标题 "
        android:textSize="16sp" />

    <TextView
        android:id="@+id/description"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/title"
        android:layout_marginBottom="5dp"
        android:layout_marginLeft="5dp"
        android:layout_marginTop="5dp"
        android:layout_toRightOf="@id/img"
        android:text="描述描述描述描述描 " />

</RelativeLayout>

见证奇迹的时候到了,看我们如何用几行代码搞定这个界面,在这之前,我们先伪造几个数据。

    private List<News> news=new ArrayList<News>();
    private void initData() {
        News _new=new News();
        _new.setTitle("南京遭虐待男童养母被刑拘");
        _new.setDescription("涉故意伤害;此前男童被");
        _new.setImgId(R.drawable.qblog_fig1);
        news.add(_new);

        _new=new News();
        _new.setTitle("今日头条");
        _new.setDescription("今日描述啊飒飒");
        _new.setImgId(R.drawable.qblog_fig2);
        news.add(_new);

        _new=new News();
        _new.setTitle("今日头条");
        _new.setDescription("今日描述啊飒飒");
        _new.setImgId(R.drawable.qblog_fig3);
        news.add(_new);
    }

开始初始化我们的界面

    private ListView listView;
    private void initView() {
        listView=(ListView) findViewById(R.id.listview);
        listView.setAdapter(new QuickAdapter<News>(this, R.layout.item, news) {

            @Override
            protected void convert(BaseAdapterHelper helper, News item) {
                helper.setText(R.id.title, item.getTitle());
                helper.setText(R.id.description, item.getDescription());
                helper.setBackgroundRes(R.id.img, item.getImgId());
            }
        });
    }

在onCreate里调用

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initData();
        initView();
    }

运行一下,你就会发现,好神奇,数据和listView进行了绑定,没错,这就是通用的适配器的作用,其实这个库里还有另外一个适配器,有兴趣的自己去看看用法。

源码下载

http://download.csdn.net/detail/sbsujjbcy/8565361

时间: 2024-10-07 15:13:39

使用通用适配器Base-adapter-helper的相关文章

RecyclerView通用适配器的实现

分析 我们需要在RecyclerViewAdapter内部维持一个数据集合的引用 需要实现Item的点击事件,包括短按和长按,并需要向外部提供设置监听器的方法 这个适配器必须通用,所以应该是泛型的,并且ViewHolder也是通用的,可以采用SparseArray维持View的所有集合 在RecyclerViewAdapter内部需要实现数据的绑定(抽象方法,延迟到子类实现),监听器的绑定 编写监听器 分为短按事件和长按事件 短按监听器 package cn.edu.zafu.base.adap

让偷懒更彻底——用Butterknife 来为recyclerview 打造通用适配器(上)

背景 随着recyclerview 的越来越普及,其高度的易用性,让我们越来越爱不释手,当然网上也出现了很多类似的通用适配器,让我们更加方便的使用它,今天我们这里介绍一种新的recyclerview的通用适配器的实现思路--把recyclerview和ButterKnife结合起来使用(ps:因为公司开发一直使用butterknife,才有了这种想法). 首先贴上我的实现效果: 代码用法使用: ModelRecyclerAdapter adapter = new ModelRecyclerAda

RecyclerView的通用适配器的高级使用

前言 博主由于项目中频繁的使用了V7包中的RecyclerView来代替ListView的列表展示,所以抽空基于ListView的通用适配器的原理,给RecyclerView也写了一个通用适配器主要支持以下功能: 1.支持item的点击事件,在多布局的情况下可以指定生效的itemType 2.支持item中的控件的点击事件(博主觉得具有创新性),在多布局的情况下可以指定生效的itemType 3.支持添加和移除头部(博主没有写添加尾部的方法,其实和添加头部的方法是类似的,如果你有需要就自己参照着

RecyclerView的通用适配器

本来这一个主题应该早就写了,只是项目多,属于自己的时间不多,所以现在才开动!! 前一段时间写了一篇文章,是关于ListView,GriView万能适配器,没有看过的同学,可以先看看那篇文章,然后在来学习RecyclerView的话,会容易很多.链接http://www.cnblogs.com/huangjialin/p/7661328.html 当然,如果对RecyclerView基础不是了解的朋友,建议先去熟悉一下RecyclerView的基础知识! 闲话不多说,先简单的介绍一下这个Recyc

JAVA学习笔记(四十八)- 适配器类 Adapter

适配器类 Adapter,对接口中的抽象方法进行空实现 import java.awt.Button; import java.awt.Frame; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEve

七、适配器(Adapter)模式--结构模式(Structural Pattern)

适配器模式:把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法在一起工作的两个类能够在一起工作. 类的 Adapter模式的结构: 类适配器类图: 由图中可以看出,Adaptee 类没有 Request方法,而客户期待这个方法.为了使客户能够使用 Adaptee 类,提供一个中间环节,即类Adapter类, Adapter 类实现了 Target 接口,并继承 自 Adaptee,Adapter 类的 Request 方法重新封装了Adaptee 的SpecificRequ

设计模式的征途—7.适配器(Adapter)模式

在现实生活中,我们的笔记本电脑的工作电压大多数都是20V,而我国的家庭用电是220V,如何让20V的笔记本电脑能够工作在220V的电压下工作?答案:引入一个电源适配器,俗称变压器,有了这个电源适配器,生活用电和笔记本电脑即可兼容. 在软件开发中,有时候也会存在这种不兼容的情况,我们也可以像电源适配器一样引入一个称之为适配器的角色来协调这些存在不兼容的结构,这种设计方案即称之为适配器模式. 适配器模式(Builder) 学习难度:★★☆☆☆ 使用频率:★★★★☆ 一.木有源码的算法库 Backgr

监听器与适配器 Listener&amp;Adapter

为什么需要Adapter?   简短回答:简化 [事件源] 能注册(addxxxListener)监听对象并发送事件对象 WindowListener listener = .....; frame.addWindowListener(listener); 特定事件 对应 特定的监听器接口(listener interface); public interface WindowListener{ void windowOpened(WindowEvent e); void windowClosi

【安卓笔记】数据适配器(adapter)中的观察者模式

ListView要想显示数据,需要用到数据适配器即Adapter.而当我们删除ListView的某个条目时,数据适配器中的数据源必然发生改变,这时候我们通过调用适配器类提供的notifyDataSetChanged方法通知listview数据发生改变,请求重新绘制. 这其中其实使用了一种比较常见的设计模式,即观察者模式. 在分析数据适配器中涉及到的观察者模式之前,我们先简单了解下什么是观察者模式. 观察者模式的定义:定义对象间的一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象

设计模式——适配器(Adapter)模式

概述 什么是适配器?在我们生活中的适配器比如插头转换器(中标转美标).USB接口转换器(type-c转苹果),电脑电源适配器(交流电转低电压直流)等.像这种将两者有差异的东西通过适配器使他们成为相互适合的东西.在程序世界中,经常存在现有的程序无法直接使用,需要做适当的变换后才能使用的情况,这种用于填补“现有程序”和“所需程序”之间差异的设计模式就是适配器(Adapter)模式.适配器模式有类适配器模式和对象适配器模式两种,前者使用继承,后者使用组合,所以后者比较灵活,推荐使用.下面通过实例对这两