三种适配器:BaseAdapter、SimpleAdapter和ArrayAdapter

一、写在前面:

  本次我们来讲解一下Android应用中三个适配器:BaseAdapter、SimpleAdapter和ArrayAdapter。其中常见的是BaseAdapter,也是个人推荐使用的适配器。

二、深入了解:

  1.什么是适配器?

   适配器:在Android中,顾名思义就是把数据变成符合界面风格的形式,并且通过ListView显示出来。也就是说适配器是数据和界面之间的桥梁。

   适配器在数据库中的数据(后台)和显示页面(前端)中充当一个转换器的角色,数据库中的数据(如数组,链表,数据库,集合等)通过适配器变成类手机页面能够正常显示的数据。可以看作是界面数据绑定的一种理解。假设把数据、适配器和ListView(页面)比喻成一个MVC模式的话,那么适配器(Adapter)在这中间就充当了Controller的角色。

  2.为什么对象设置数据源   

   一般是为ListView提供数据的转换,当然GridView[网格视图]、Spinner[下拉列表]、Gallery[画廊]、ViewPage等都需要使用适配器来为其设置数据源。

三、代码示例:

   ArrayAdapter示范:

    要求:使用数组适配器输出相对应的数据到ListView中

    1、首先、创建Android工程,后在布局文件中定义一个ListView,并且设置好相关属性:

<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="match_parent" >

<ListView

android:id="@+id/listView"

android:layout_width="match_parent"

android:layout_height="wrap_content"/>

</RelativeLayout>

2、其次、在activity类中书写代码,具体请看代码,并且代码上有相关的注释

package com.mqz.android_arrayadapter;

import android.app.Activity;

import android.os.Bundle;

import android.widget.ArrayAdapter;

import android.widget.ListView;

public class MainActivity extends Activity {

private ListView listView;    //定义ListView用来获取到,布局文件中的ListView控件

private String[] city = {"广州","深圳","北京","上海","香港","澳门","天津"} ;  //定义一个数组,作为数据源

private ArrayAdapter<String> arrayAdapter;    //定义一个数组适配器对象

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

listView = (ListView)findViewById(R.id.listView); //获取布局文件中的ListView控件对象

/*

* Context context,  上下文对象

* int resource,    items项显示的布局样式,一般是系统的布局文  android.R.layout.** (但是需要选择和ListView相适合的布局文件否则运行报错)

* String[] objects  数组对象(数据源)

*

* */

//创建数组适配器对象,并且通过参数设置类item项的布局样式和数据源

arrayAdapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1, city);

//把数组适配器加载到ListView控件中

listView.setAdapter(arrayAdapter)

}

}

SimpleAdapter示范:

     要求:把后台数据填充到页面,其中包括需要填充的有TextView和ImageView,也就是名字和图片显示到页面上。

     1、首先,创建好android工程,并且在主布局文件中添加一个ListView控件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="horizontal"

tools:context="com.mqz.android_simpleadapter.MainActivity" >

<ListView

android:id="@+id/listView"

android:layout_width="match_parent"

android:layout_height="match_parent"

></ListView>

</LinearLayout>

2、其次,在Activity类中书写代码,其间附有注释,具体如下:

package com.mqz.android_simpleadapter;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.widget.AdapterView;

import android.widget.AdapterView.OnItemClickListener;

import android.widget.ListView;

import android.widget.SimpleAdapter;

import android.widget.TextView;

import android.widget.Toast;

public class MainActivity extends Activity {

private ListView listView;   //定义ListView对象,用来获取布局文件中的ListView控件

private String[] name = {"小明","小华","小梁","小王","小林","小赵"};  //定义一个名字数组,用来为数据源提供姓名

private int[] images = {R.drawable.one,R.drawable.two,R.drawable.three,R.drawable.four,R.drawable.five,R.drawable.six};//定义一个 整形数组,用来为数据源中的头像

private List<Map<String,Object>> list_map = new ArrayList<Map<String,Object>>(); //定义一个适配器对象

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

listView = (ListView) findViewById(R.id.listView); //获取布局文件中的ListView对象

//1.准备好数据源,循环为listView添加数据(数据源的准备工作,这里是模拟从SQLite中查询数据)

for(int i=0;i<6;i++){

Map<String,Object> items = new HashMap<String, Object>(); //创建一个键值对的Map集合,用来存放名字和头像

items.put("pic", images[i]);  //放入头像, 根据下标获取数组

items.put("name", name[i]);      //放入名字, 根据下标获取数组

list_map.add(items);   //把这个存放好数据的Map集合放入到list中,这就完成类数据源的准备工作

}

//2、创建适配器(可以使用外部类的方式、内部类方式等均可)

SimpleAdapter simpleAdapter = new SimpleAdapter(

MainActivity.this,/*传入一个上下文作为参数*/

list_map,         /*传入相对应的数据源,这个数据源不仅仅是数据而且还是和界面相耦合的混合体。*/

R.layout.list_items, /*设置具体某个items的布局,需要是新的布局,而不是ListView控件的布局*/

new String[]{"pic","name"}, /*传入上面定义的键值对的键名称,会自动根据传入的键找到对应的值*/

new int[]{R.id.items_imageView1,R.id.items_textView1});/*传入items布局文件中需要指定传入的控件,这里直接上id即可*/

//3、为listView加入适配器

listView.setAdapter(simpleAdapter);

});

}

}

3、创建 item 项的 layout 布局文件:

下面是 item 项的布局文件:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="horizontal" >

<ImageView

android:id="@+id/items_imageView1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

/>

<TextView

android:id="@+id/items_textView1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginLeft="52dp"/>

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/items_textView2"

android:text="hello android!"

android:layout_alignParentRight="true"

/>

</RelativeLayout>

原文地址:https://www.cnblogs.com/xiaofeixx/p/9682539.html

时间: 2024-11-15 00:52:01

三种适配器:BaseAdapter、SimpleAdapter和ArrayAdapter的相关文章

Android应用项目中BaseAdapter、SimpleAdapter和ArrayAdapter中的三种适配器

一.写在前面: 本次我们来讲解一下Android应用中三个适配器:BaseAdapter.SimpleAdapter和ArrayAdapter.其中常见的是BaseAdapter,也是个人推荐使用的适配器. 二.深入了解: 1.什么是适配器? 适配器:在安卓中,顾名思义就是把数据变成符合界面风格的形式,并且通过ListView显示出来.也就是说适配器是数据和界面之间的桥梁. 适配器在数据库中的数据(后台)和显示页面(前端)中充当一个转换器的角色,数据库中的数据(如数组,链表,数据库,集合等)通过

SpringMVC的三种处理器适配器

SpringMVC具有三种处理器适配器,他们分别是BeanNameUrlHandlerMapping.SimpleControllerHandlerAdapter.ControllerClassNameHandlerMapping,可以分别使用这三种处理器适配器进行获取Controller. 程序结构如下: 首先,来介绍BeanNameUrlHandlerMapping映射,如下所示,这种映射使用Bean的name来访问控制器,它根据类名(Mycontroller)类名.do来访问,类名首字母小

几种适配器&amp;观察者&amp;ListView之间的那点事

android中的几种适配器&观察者&ListView 1.我们知道Android中的Adapter类是处于ListView和数据源之间的数据总线,它负责为ListView提供数据. 2.适配器(BaseAdapter)中提供了一个notifyDataSetChanged()方法,当数据源中的数据发生变化时,可以通过调用该方法去通知ListView更新界面上的数据. 3.常见的三种adapter它们可以显示的数据的区别在哪里: ArrayAdapter,数据源中只能是文本数据,只要传入的显

Android学习---ListView的点击事件,simpleAdapter和arrayadapter的原理和使用 - Hi_Amos

如题,本文将介绍 listview的点击事件,simpleAdapter和arrayadapter的原理和使用. 1.ListView的注册点击事件 //注册点击事件 personListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { /** * * @param parent 当前ListView * @param view 代表当前被点击的条目 * @param position 当前条目的位置 * @p

Android自定义View的三种实现方式

在毕设项目中多处用到自定义控件,一直打算总结一下自定义控件的实现方式,今天就来总结一下吧.在此之前学习了郭霖大神博客上面关于自定义View的几篇博文,感觉受益良多,本文中就参考了其中的一些内容. 总结来说,自定义控件的实现有三种方式,分别是:组合控件.自绘控件和继承控件.下面将分别对这三种方式进行介绍. (一)组合控件 组合控件,顾名思义就是将一些小的控件组合起来形成一个新的控件,这些小的控件多是系统自带的控件.比如很多应用中普遍使用的标题栏控件,其实用的就是组合控件,那么下面将通过实现一个简单

三种实现Android主界面Tab的方式

在平时的Android开发中,我们经常会使用Tab来进行主界面的布局.由于手机屏幕尺寸的限制,合理使用Tab可以极大的利用屏幕资源,给用户带来良好的体验.学会Tab的使用方法已经成为学习Android开发必不可少的技能了.我们经常使用的微信.QQ就是使用Tab的方式进行主界面的布局的. 下面我们通过三种方式实现旧版的微信以演示Tab的使用方式. 最终效果: 第一种:单纯使用ViewPager MainActivity.java public class MainActivity extends

Android必学之数据适配器BaseAdapter

.什么是数据适配器? 下图展示了数据源.适配器.ListView等数据展示控件之间的关系.我们知道,数据源是各种各样的,而ListView所展示数据的格式则是有一定的要求的.数据适配器正是建立了数据源与ListView之间的适配关系,将数据源转换为ListView能够显示的数据格式,从而将数据的来源与数据的显示进行解耦,降低程序的耦合性.这也体现了Android的适配器模式的使用.对于ListView.GridView等数据展示控件有多种数据适配器,本文讲解最通用的数据适配器——BaseAdap

Android-ListView两种适配器以及事件监听

Android-ListView两种适配器 ListView在安卓App中非常常见,几乎每一个App都会有涉及,比如QQ消息列表,或者是 通讯录还有就是酷我音乐的歌曲列表都是ListView.继承ListView.所以非常重要. 这就是ListView ArrayAdapter 数据源是数据或者集合,比较简单 布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:androi

Android学习---ListView的点击事件,simpleAdapter和arrayadapter,SimpleCursoAdapter的原理和使用

如题,本文将介绍 listview的点击事件,simpleAdapter和arrayadapter的原理和使用. 1.ListView的注册点击事件 //注册点击事件 personListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { /** * * @param parent 当前ListView * @param view 代表当前被点击的条目 * @param position 当前条目的位置 * @p