Android 适配器教程(二)

上次我写了一个类似前言的东西,向大家粗略介绍了一下什么是适配器,并且举了一个最简单的例子帮助大家理解,使用了安卓原生的ArrayAdapter现在我们继续向下学习,同时也继续在我们上次的Demo项目中继续添加例子,一步步的向下深入学习。

这次要讲解的是另外一个常用的安卓原生适配器—SimpleCursorAdapter:

关于SimpleCursorAdapter,sdk的解释是这样的:

An easyadapter to map columns from a cursor to TextViews or ImageViews defined in anXML file. You can specify which columns you want, which views you want todisplay the columns, and the
XML file that defines the appearance of theseviews。

简单的说就是方便把从游标得到的数据进行列表显示,并可以把指定的列映射到对应的TextView中。

下面要写的程序是从电话簿中把联系人显示到类表中获得一个指向数据库的Cursor并且定义一个布局文件(当然也可以使用系统自带的)将数据展示出来!

项目开始!

(1)还是先在activity_main.xml里添加一个button,一会跳转的时候使用。

(2)然后新建一个类SimpleCursorAdapterDemo继承自Activity作为我们第二个例子的Activity,并且

@Override 我们的onCreate方法。

(3)新建一个xml文件simplecursoradapterdemo.xml作为我们的布局文件,其中也是包含一个文本域和一个ListView:

代码如下

simplecursoradapterdemo.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="这是simplecursoradapter的一个例子" >
    </TextView>

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

</LinearLayout>

(4)回到SimpleCursorAdapterDemo,定义一个Listview暂且叫做lv,并使用刚才的ID,setContentView()为刚才的xml布局,然后为lv设置一个适配器:

SimpleCursorAdapter(Context context,int
layout,Cursor c, String[] from, int[] to)

先解释一下参数:

第一个参数this,第二个layout的参数是ListView中单行的布局, c是你数据的游标。刚开始其实from和to比较让人不熟悉,From是你查询出的数据,to是单行布局中的单独控件,一对一的关系,用起来非常方便。

再说一下需要用到的Cursor

我们用:

Cursor cursor = getContentResolver().query(People.CONTENT_URI, null, null, null,null);

先获得一个指向系统通讯录数据库的Cursor对象获得数据来源。

再使用:

startManagingCursor(cursor);

将获得的Cursor对象交由Activity管理,这样Cursor的生命周期和Activity便能够自动同步,省去自己手动管理Cursor。

SimpleCursorAdapter 构造函数前面3个参数和ArrayAdapter是一样的,最后两个参数:一个包含数据库的列的String型数组,一个包含布局文件中对应组件id的int型数组。其作用是自动的将String型数组所表示的每一列数据映射到布局文件对应id的组件上。上面的代码,将NAME列的数据一次映射到布局文件的id为text1的组件上。

注意:需要在AndroidManifest.xml中如权限:

<uses-permissionandroid:name="android.permission.READ_CONTACTS"></uses-permission>

具体代码如下:

package com.example.adapterdemo;

import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.Contacts.People;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;

public class SimpleCursorAdapterDemo extends Activity{

	private ListView lv;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.simplecursoradapterdemo);
        lv = (ListView)findViewById(R.id.simplecursoradapterlistview);
        Cursor cursor = getContentResolver().query(People.CONTENT_URI, null, null, null, null);
        startManagingCursor(cursor);

        ListAdapter listAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_expandable_list_item_1,
                cursor,
                new String[]{People.NAME},
                new int[]{android.R.id.text1});

        lv.setAdapter(listAdapter);
	}
}

最终的效果图:

这样第二种常用的安卓原生适配器也就告一段落了,还是本着分成多篇以防止篇幅过长的原则,这一篇就到这里了,下一讲我们继续学习SimpleAdapter,一种可扩展性很强的适配器,大家不要错过哦!

源码会在最后一篇写完的时候传上来,我也是边写博客,边写代码,我觉得这样思路比较清晰。

我也是学生,水平有限,还望大家多多指教~

Android 适配器教程(二),布布扣,bubuko.com

时间: 2024-10-29 04:48:09

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

Android 适配器教程(三)

前两讲中,我们分别大体的了解了适配器是什么,和它的一些基本知识. 并且分别讲解了了ArrayAdapter和SimpleCursorAdapter这两种常用的安卓原生适配器,这两种适配器都是封装好了的,他们虽然使用起来非常简单,但是可扩展性较差. 现在我们继续向下深入学习安卓的适配器,这一次我们将会一同学习SimpleAdapter simpleAdapter的扩展性最好,可以定义各种各样的布局出来,可以放上ImageView(图片),还可以放上Button(按钮),CheckBox(复选框)等

Android 适配器教程(一)

最近在开发安卓的过程中发现ListView无疑是一个经常使用的组件,而提到ListView又不得不提一下适配器了,我打算用几个实例,由浅入深的向大家仔细讲解一下适配器的使用,虽然这算不上什么高深的问题,我还是希望能给大家带来一些收获,我也是菜鸟一只,写的不好的或者有错的地方还请大家帮忙指出.下面进入正文: 首先让我们来认识一下适配器: 什么是适配器呢?顾名思义,就是把一些数据给弄得适当,适合以便于在View上显示.适配器就像显示器,把复杂的东西按人可以接受的方式来展现.也可以这样来理解适配器,L

Android 适配器教程(五)

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

Android 适配器教程 (六)

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

Android OpenGL教程 二 2D形状画画

首先画个三角形 private float[] mTriangleArray={ 0.0f,1.0f,0.0f, 1.0f,-1.0f,0.0f, -1.0f,-1.0f,0.0f }; gl.glDrawArrays(GL10.GL_TRIANGLES, 0, mTriangleArray.length/3); 然后画个两个三角形拼成一个正方形,把之前的坐标换一下就好了 private float[] mTriangleArray={ 1.0f,1.0f,0.0f, 1.0f,-1.0f,0.

Android高手进阶教程(二十八)之---Android ViewPager控件的使用(基于ViewPager的横向相册)!!!

分类: Android高手进阶 Android基础教程 2012-09-14 18:10 29759人阅读 评论(35) 收藏 举报 android相册layoutobjectclassloaderencoding 大家好,相信大家用的ListView控件一定很多的,是竖向滑动的,复用convertView,我们可以加载成千上万的数据,但有时候我们会有 这个需求比如相册,我们想横向滑动,并且数据有好多,这时候ViewPager控件就派上用场了,ViewPager使用时候我们需要导入第三方包 an

Android——ListView多布局+适配器(二)

Android--ListView多布局+适配器(二) <span style="font-size:18px;">package com.example.administrator.newstop.entity; /** * Created by Administrator on 2016/8/4. */ public class News { private String title; private String pubDate; private int img; p

Mac下Android studio 之NDK配置教程(二)

Mac下Android studio 之NDK配置教程(二) (一)简述 从上一篇NDK配置教程(一) 中,我 简单的阐述了MAC下NDK的基本解压和环境配置步骤. 本节我讲详细描述android studio 在MAC下的的配置运行步骤. (二)开始 首先,我们前往上次解压好的NDK文件路径,使用Android studio 导入Hello-jni 导入完成后,AS会自动帮我们构建为grade版本. 等待完成,版本构建完成. 打开文件目录如图所示 我们在local.properties文件下添

OSG for Android新手教程系列(二)——项目配置

在上一篇教程中,主要介绍了如何把OSG源代码编译成为能够在Android项目下使用的函数库.在这一篇教程中,我将针对如何在自己的Android项目中配置OSG函数库进行详细讲解. 现阶段网上关于OSGfor Android的配置方式教程有很多,但是大部分在实际使用起来都会或多或少的出现一些问题,无法完全照搬,需要一定的修改.而且,对于配置中的那些变量的具体含义,也很少有人能够进行仔细的讲解.这非常不利于新手的学习和理解,往往会造成出现bug后面对满屏幕的错误log完全一脸茫然的情况. 所以我将在