适配器是AdapterView视图(如ListView - 列表视图控件、Gallery - 缩略图浏览器控件、GridView - 网格控件、Spinner - 下拉列表控件、AutoCompleteTextView - 自动提示文本框、ExpandableListView - 支持展开/收缩功能的列表控件等)与数据之间的桥梁,用来处理数据并将数据绑定到AdapterView上。
  android提供多种适配器,开发时可以针对数据源的不同采用最方便的适配器,也可以自定义适配器完成复杂功能。

1. String[]: ArrayAdapter

2. List<Map<String,?>>: SimpleAdapter

3. 数据库Cursor: SimpleCursorAdapter

一.ArrayAdapter

使用ArrayAdapter(数组适配器),需要把数据放入一个数组以便显示。
android.R.layout.simple_list_item_1是系统定义好的布局文件只显示一行文字。

1.用静态字符数组常量来给ArrayAdapter 赋值。 优点,直接用数组写入,数据量大建议使用。

static final String[] list="...";

ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,R.layout.list_item,list);

2.在程序中给ArrayAdapter 赋值。优点:可以在程序中灵活写入。

ArrayList<String> list = new ArrayList<String>();
list.add("数据1");
list.add("数据N");
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,R.layout.list_item,list);

3.使用国际化接口 字符数组来 给ArrayAdapter 赋值。优点:提供的组件的选项可以国际化。

目录【res】→【values】→【strings.xml】添加

<string-array name="letter">
  <item>A</item>
  <item>B</item>
  <item>C</item>
  <item>D</item>
</string-array>
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,R.array.letter,android.R.layout.my_list_item)//只需要显示

ArrayAdapter<CharSequence> adapter = new ArrayAdapter(this,android.R.layout.my_list_item,Arrays.asList(getResources().getTextArray(R.array.letter)))//允许动态增删

二.SimpleAdapter

SimpleAdapter能定义各种各样的布局出来,可以放上ImageView(图片),还可以放上Button(按钮),CheckBox(复选框)

布局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="horizontal"
android:weightSum="1"> <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="30dp"
android:text="chushizhi"
android:id="@+id/txtPhoneNumber"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="right"> <Button
android:layout_width="40dp"
android:layout_height="40dp"
android:background="@drawable/call"
android:id="@+id/btn_Call"/>
<Button
android:layout_width="40dp"
android:layout_height="35dp"
android:layout_marginLeft="30dp"
android:layout_marginRight="15dp"
android:background="@drawable/message"
android:id="@+id/btn_Message"/> </LinearLayout>
</LinearLayout>

代码:

package com.example.sssss.listview;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleAdapter; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener {
private ListView listView; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); listView= (ListView) findViewById(R.id.listView1); //数据
Map<String,String> map1=new HashMap<String,String>();
map1.put("phoneNumber","18468182835");
map1.put("call","");
map1.put("message",""); Map<String,String> map2=new HashMap<String,String>();
map2.put("phoneNumber","18787174541");
map2.put("call","");
map2.put("message",""); Map<String,String> map3=new HashMap<String,String>();
map3.put("phoneNumber","18468181959");
map3.put("call","");
map3.put("message",""); List<Map<String,String>> list=new ArrayList<Map<String,String>>();
list.add(map1);
list.add(map2);
list.add(map3); //适配器
SimpleAdapter adapter=new SimpleAdapter(
this,
list,
R.layout.layout_item,
new String[]{"phoneNumber","call","message"},
new int[]{R.id.txtPhoneNumber,R.id.btn_Call,R.id.btn_Message});
//可以想成把一个放好数据的布局文件放入本界面中
listView.setAdapter(adapter);
}

Android学习总结——适配器的更多相关文章

  1. Android学习之适配器ArrayAdapter SimpleAdapter

    Adapter是个什么角色呢?其实它的作用就是View界面和数据之间的桥梁.我们可以看作是界面数据绑定的一种理解,它所操纵的数据一般都是一些比较复杂的数据,如数组,链表,数据库,集合等. 常用的适配器 ...

  2. android学习-Adapter适配器进阶

    参考资源 Android 快速开发系列 打造万能的ListView GridView 适配器 实现代码复用,争取打机**的时间. android4.4源码 target=android-19 一般自定 ...

  3. Android学习之适配器SimpleCursorAdapter

    三.   SimpleCursorAdapter与SimpleAdapter用法相近.只是将List对象换成了Cursor对象.而且SimpleCursorAdapter类构造方法的第四个参数from ...

  4. Android学习随笔--ListView的分页功能

    第一次写博客,可能格式,排版什么的会非常不美观,不过我主要是为了记录自己的Android学习之路,为了以后能有些东西回顾.既然是为了学习,那我肯定会吸收各位大大们的知道经验,有不足的地方请指出. 通过 ...

  5. Android学习之路——简易版微信为例(二)

    1 概述 从这篇博文开始,正式进入简易版微信的开发.深入学习前,想谈谈个人对Android程序开发一些理解,不一定正确,只是自己的一点想法.Android程序开发不像我们在大学时候写C控制台程序那样, ...

  6. 2015最新Android学习线路图

    Android是一个以Linux为基础的半开源操作系统,主要用于移动设备,由Google和开放手持设备联盟开发与领导.据2011年初数据显示仅正式上市两年的操作系统Android已经跃居全球最受欢迎的 ...

  7. Android学习系列(18)--App工程结构搭建

     本文算是一篇漫谈,谈一谈关于Android开发中工程初始化的时候如何在初期我们就能搭建一个好的架构.      关于android架构,因为手机的限制,目前我觉得也确实没什么大谈特谈的,但是从开发的 ...

  8. Android学习系列(10)--App列表之拖拽ListView(上)

     研究了很久的拖拽ListView的实现,受益良多,特此与尔共飨.      鉴于这部分内容网上的资料少而简陋,而具体的实现过程或许对大家才有帮助,为了详尽而不失真,我们一步一步分析,分成两篇文章. ...

  9. 【Android】完善Android学习(七:API 4.0.3)

    备注:之前Android入门学习的书籍使用的是杨丰盛的<Android应用开发揭秘>,这本书是基于Android 2.2API的,目前Android已经到4.4了,更新了很多的API,也增 ...

随机推荐

  1. Js操作Select

    jquery操作select(取值,设置选中) 每一次操作select的时候,总是要出来翻一下资料,不如自己总结一下,以后就翻这里了. 比如<select class="selecto ...

  2. eclipse配置maven + 创建maven项目

        登录|注册     努力+坚持,而且还很年轻   目录(?)[+] 在现实的企业中,以低成本.高效率.高质量的完成项目,不仅仅需要技术大牛,企业更加需要管理大牛,管理者只懂技术是远远不够的.当 ...

  3. redmine fastcgi常常崩溃的解决方式

    最终找到了解决方法,在以下的文件里加入两行就可以: /home/redmine/redmine-2.5.1/public/dispatch.fcgi require 'rubygems' requir ...

  4. javascript 获取event对象

    //转载处 http://www.cnblogs.com/funlake/archive/2009/04/07/1431238.html 非常详细 先从一个简单的例子说起,一个简单的button控件如 ...

  5. IIS7如何显示详细错误信息

    使用Vista或Win7操作系统的用户在不断增加,用Win7旗舰版开发测试程序程序人员也与日俱增,Win7下测试程序时,如果程序出 错,IIS7会提示HTTP Error 500 - Internal ...

  6. C++实现二叉树的基本操作

    #include <iostream> #include <stack> #include <queue> using std::cin; using std::c ...

  7. asp.net缓存(三)

    Asp.net应用程序数据缓存 System.Web.Caching 命名空间提供用于缓存服务器上常用数据的类.此命名空间包括 Cache 类,该类是一个字典,您可以在其中存储任意数据对象,如哈希表和 ...

  8. js 之 Post发送请求

    // ajax 对象 function ajaxObject() { var xmlHttp; try { // Firefox, Opera 8.0+, Safari xmlHttp = new X ...

  9. 轻量级jquery框架之--布局(layout)

    布局需求 (1)支持横向生成布局项即可,不需要纵向生成布局. (2)支持布局项右侧收缩功能 (3)支持自定义布局项图标.标题,并提供动态修改布局项图片和标题的api (4)支持JSON/html/if ...

  10. Ecstore 2.0 报表显示空白

    INSERT INTO `sdb_ectools_analysis` (`id`, `service`, `interval`, `modify`) VALUES (, ), (, ), (, ); ...