Android 适配器教程(一)

最近在开发安卓的过程中发现ListView无疑是一个经常使用的组件,而提到ListView又不得不提一下适配器了,我打算用几个实例,由浅入深的向大家仔细讲解一下适配器的使用,虽然这算不上什么高深的问题,我还是希望能给大家带来一些收获,我也是菜鸟一只,写的不好的或者有错的地方还请大家帮忙指出。下面进入正文:

首先让我们来认识一下适配器:


什么是适配器呢?顾名思义,就是把一些数据给弄得适当,适合以便于在View上显示。适配器就像显示器,把复杂的东西按人可以接受的方式来展现。也可以这样来理解适配器,ListView通过适配器,理解我们要对ListView里加入什么内容,而我们在适配器里@Override的方法,就是让我们写上我们要告诉这个ListView的一些基本内容。

可以说适配器就是数据和视图之间的桥梁,学好适配器还是非常重要的。

 
让我们先从各个方面理解适配器,然后看一些例子我想应该就可以彻底掌握它了!

 

  适配器的工作原理:

适配器是怎么处理得到的数据,并把它显示出来的呢?其实很简单,说白了适配器它也是一个类,在类里面它实
现了父类的这几个方法:

                        public int getCount()                               //得到数据的行数

                        public Object getItem(int position)         //根据position得到某一行的记录

                       public long getItemId(intposition)           //的到某一条记录的ID

还有最重要的:

publicView getView(intposition, View convertView, ViewGroup parent)  

             
//相比于其它几个方法这个方法是最重要的,它显式的定义了适配器将要以什么样的方式去显示我们所
填充的数据,在自定义的适配器里面我们通常会给它写个布局文件。

这些在最后的一两个例子里会仔细讲解,我们从简单的看起:首先看看常用的适配器 

         我们常用的适配器一共有三个,当然不包含自定义的适配器:就是ArrayAdapter,SimpleAdapter,SimpleCursorAdapter 这三个,他们都是继承于BaseAdapter 。

 

下面我会逐一介绍,我们在具体应用中来继续学习Adapter:

说道Adapter不得不说道ListView,或者说用到ListView不得不提到Adapter

        在android开发中ListView是比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示。

而列表的显示需要三个元素:

1.ListVeiw 用来展示列表的View。

2.适配器  用来把数据映射到ListView上的中介。

3.数据    具体的将被映射的字符串,图片,或者基本组件。

 

根据列表的适配器类型,列表分为三种,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter

其中以ArrayAdapter最为简单,只能展示一行字。SimpleAdapter有最好的扩充性,可以自定义出各种效果。SimpleCursorAdapter可以认为是SimpleAdapter对数据库的简单结合,可以方面的把数据库的内容以列表的形式展示出来

 

我们从最简单的ListView开始(ArrayAdapter):

 

我打算把这几种适配器的例子放在一个app里面,然后上传到我的资源,再分享链接给大家。所以我打算由MainActivity里的Button来跳转到各个例子,现在让我们一步步的把这个Demo写出来。

  项目开始啦!


(1)首先,新建一个app ,名字叫做 AdapterDemo ,先在activity_main.xml里添加一个button,一会跳转的时候使用。

(2)然后新建一个类ArrayAdapterDemo继承自Activity作为我们第一个小例子的Activity,@Override 我们的onCreate方法

新建一个xml文件arrayadapterdemo.xml作为我们的布局文件,其中包含一个文本域和一个ListView,代码如下:

arrayadapterdemo.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="这是ArrayAdapter的一个例子" >
    </TextView>

    <ListView
        android:id="@+id/arrayadapterdemolistview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
    </ListView>

</LinearLayout>

(3)然后回到ArrayAdapterDemo,定义一个Listview暂且叫做lv,并且lv=(ListView)findViewById(R.id.arrayadapterdemolistview);  
,setContentView()为刚才的xml布局,然后为lv设置一个适配器,这里使用的是安卓原生的ArrayAdapter(Context context,
inttextViewResourceId, 
List<T>
objects)
来装配数据,要装配这些数据就需要一个连接ListView视图对象和数组数据的适配器
来两者的适配工作。

        ArrayAdapter的构造需要三个参数,依次为:this,布局文件(注意这里的布局文件描述的是列表的每一行的布局,
android.R.layout.simple_list_item_1是系统定义好的布局文件只显示一行文字,数据源(一个List集合)。同时用setAdapter()完
成适配的最后工作。

一般写一个getData()方法来作为最后一个参数,最终代码如下:

package com.example.adapterdemo;

import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class ArrayAdapterDemo extends Activity {
	private ListView lv;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.arrayadapterdemo);
		lv=(ListView)findViewById(R.id.arrayadapterdemolistview);
		lv.setAdapter(new ArrayAdapter<String>(this,
				android.R.layout.simple_expandable_list_item_1, getData()));
	}

	public List<String> getData(){

		List<String> data = new ArrayList<String>();
        data.add("测试数据1");
        data.add("测试数据2");
        data.add("测试数据3");
        data.add("测试数据4");

        return data;

	}

}

再在AndroidManifest.xml中注册Activity并在主界面中完成button监听跳转就可以了。

下面是实现结果:

教程一就先到此结束啦!一下子写在一篇里面篇幅太长,大家也不喜欢看。

下次讲解的是:

SimpleCursorAdapter在ListView中显示手机联系人列表。

请大家继续关注!


源码我会在最后一篇结束的时候发上来,我也是边写博客边写的代码,我觉得这样可能讲的思路更清晰一些。

我也是学生,水平有限,还请多多指教!


时间: 2024-10-28 09:44:29

Android 适配器教程(一)的相关文章

Android 适配器教程(四)

之前我们学习了什么是适配器,并且三种常用的安卓原生适配器也讲完了,接下来我们就要自定义适配器了,自定义的适配器能适应更多的情况,功能更加强大,当然也需要我们更加深入的学习才能应用自如. 终于到自己写一个适配器的时候了! 我准备了两个例子,一个简单一些,一个复杂一些,这次先看个简单的: 我还是继续在前三次的Demo项目上继续添加例子,最后一篇的时候把源码分享给大家~ 让我们继续一步步写下去. 这个例子是在ListView上面添加按钮,具体来说是显示一个按钮和一个图片,两行字.这个小问题涉及到的知识

Android 适配器教程 (六)

我们的适配器学习已经接近尾声了,虽然这不是一个大问题,但是确实是值得学习的一块知识,回想一下之前五讲的知识,我们已经学到了很多东西了.                在之前五讲中,我们已经由浅入深的认识了适配器,从最简单的ListView写起,最后完成了自定义适配器的简单例子,然后又为大家讲解了ViewHolder和settag在自定义适配器中的应用,帮助大家理解了getView方法,还讲解了关于ListView性能方面的优化问题.自定义适配器这一部分是我们这次学习真正的重点,很多问题可以用安卓

Android 适配器教程(五)

在之前四讲中,我们已经由浅入深的认识了适配器,从最简单的ListView写起,最后完成了自定义适配器的简单例子,这一次咱们就上次留下来的问题 再进行更加深入的学习,主要是getView方法的原理,还有Holder的使用,还有关于ListView性能方面的优化问题.自定义适配器这一部分需要好好的进行理解,只有真正理解的比较透彻,写起来才会比较顺手.这一次就没有例子了,我会配上几张图片,希望能让大家看得明白. 先从ListView的原理来进行讲解吧! 大家先看一张图: 这就是ListView的工作原

Android 适配器教程(二)

       上次我写了一个类似前言的东西,向大家粗略介绍了一下什么是适配器,并且举了一个最简单的例子帮助大家理解,使用了安卓原生的ArrayAdapter,现在我们继续向下学习,同时也继续在我们上次的Demo项目中继续添加例子,一步步的向下深入学习. 这次要讲解的是另外一个常用的安卓原生适配器-SimpleCursorAdapter: 关于SimpleCursorAdapter,sdk的解释是这样的:       An easyadapter to map columns from a cur

Android测试教程(9):ApplicationTestCase示例

前面介绍了Android测试的一些理论知识,从本篇开始的几篇将结合ApiDemoTest示例来介绍Android测试的实例.在此之前可 以参照Android测试教程(3):测试项目 创建ApiDemos->tests 测试项目,本项目测试用来测试ApiDemos,主要目的是介绍 Android测试框架的使用方法. 当然要测试ApiDemos,事先要创建好项目ApiDemos.下图显示了创建好ApiDemos- >Tests后,ApiDemos->Tests中所含的Java类: Andro

Android测试教程(5):第一个测试项目HelloWorldTest

本例介绍创建一个测试项目的一般步骤和编写测试用例的基本方法. 为简单起见,创建一个HelloWorld应用,带有一 个Greeting类,其定义如下: public class Greeting { private String name; public Greeting(String name){ this.name=name; } public String getGreetings(){ return "Hello," +name; } } 测试项目打算来测试这个Greeting

Android测试教程(1):概述

测试也是开发过程中一个重要组成部分,Android开发环境集成一个测试框架可以用来测试Android应用的各个方面,单元测试,UI测试等. 本教程基于Android 开发教程英文版. 基本概念包括 Android测试的基础知识 Activity Testing 侧重于Activity的测试,介绍了如果使用Instrumentation 在正常Activity生命周期之外来控制Activity,然后测试Activity的特定的功能和测试UI的一些技巧. Content Provider Testi

开发Android 日历教程

一.创建 Android Project 开发Android 日历教程-android日历开发"> 在新建对话框中输入 App 属性,SDK版本全部选最新的,不作版本兼容.主题选择 Holo Dark. 下一步,使用默认设置 下一步,使用默认设置 下一步,使用默认配置 下一步,使用默认设置 创建完成后的初始画面 在上面的步骤中,我们选择了创建 MainActivity,ADT 帮我们在 src 目录下生成了 MainActivity.java 文件,在 res/layout/ 目录下生成了

苹果电脑安装android studio教程

  mac安装android studio教程: 1.在Mac上打开Parallels Desktop的控制中心,点击右上角的 + 按钮,创建一个新的虚拟机. 2.接着在新建虚拟机的类型里,点击下方的Download Andriod选项,如图所示 3.随后会显示即将要下载的Andriod程序包的大小,以及解压安装以后的大小,点击"下载"按钮继续 . 4.接着会自动下载安装Andriod的文件包,如图所示 5.当下载完成以后,即可在虚拟机中运行Andriod了,如图所示 6.启动完成以后