Android学习总结——适配器
适配器是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学习总结——适配器的更多相关文章
- Android学习之适配器ArrayAdapter SimpleAdapter
Adapter是个什么角色呢?其实它的作用就是View界面和数据之间的桥梁.我们可以看作是界面数据绑定的一种理解,它所操纵的数据一般都是一些比较复杂的数据,如数组,链表,数据库,集合等. 常用的适配器 ...
- android学习-Adapter适配器进阶
参考资源 Android 快速开发系列 打造万能的ListView GridView 适配器 实现代码复用,争取打机**的时间. android4.4源码 target=android-19 一般自定 ...
- Android学习之适配器SimpleCursorAdapter
三. SimpleCursorAdapter与SimpleAdapter用法相近.只是将List对象换成了Cursor对象.而且SimpleCursorAdapter类构造方法的第四个参数from ...
- Android学习随笔--ListView的分页功能
第一次写博客,可能格式,排版什么的会非常不美观,不过我主要是为了记录自己的Android学习之路,为了以后能有些东西回顾.既然是为了学习,那我肯定会吸收各位大大们的知道经验,有不足的地方请指出. 通过 ...
- Android学习之路——简易版微信为例(二)
1 概述 从这篇博文开始,正式进入简易版微信的开发.深入学习前,想谈谈个人对Android程序开发一些理解,不一定正确,只是自己的一点想法.Android程序开发不像我们在大学时候写C控制台程序那样, ...
- 2015最新Android学习线路图
Android是一个以Linux为基础的半开源操作系统,主要用于移动设备,由Google和开放手持设备联盟开发与领导.据2011年初数据显示仅正式上市两年的操作系统Android已经跃居全球最受欢迎的 ...
- Android学习系列(18)--App工程结构搭建
本文算是一篇漫谈,谈一谈关于Android开发中工程初始化的时候如何在初期我们就能搭建一个好的架构. 关于android架构,因为手机的限制,目前我觉得也确实没什么大谈特谈的,但是从开发的 ...
- Android学习系列(10)--App列表之拖拽ListView(上)
研究了很久的拖拽ListView的实现,受益良多,特此与尔共飨. 鉴于这部分内容网上的资料少而简陋,而具体的实现过程或许对大家才有帮助,为了详尽而不失真,我们一步一步分析,分成两篇文章. ...
- 【Android】完善Android学习(七:API 4.0.3)
备注:之前Android入门学习的书籍使用的是杨丰盛的<Android应用开发揭秘>,这本书是基于Android 2.2API的,目前Android已经到4.4了,更新了很多的API,也增 ...
随机推荐
- php 站内搜索 多表 分页
借鉴了:http://blog.chinaunix.net/uid-20787846-id-3488253.html 这篇文章 ,在此基础上增加了分页功能 <?php /* 关键字 */ $ke ...
- pyqt 自定义例子学习
# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' import sys from PyQt4.QtCore impor ...
- 使用STS 创建spring配置文件
1.创建一个bean文件 2.输入文件名applicationContext.xml 3.这里会自动显示模板文件 4.创建后,自动填充头不定义 到这里就可以发现,我们创建spring文件时,需要的配置 ...
- [每日一题] OCP1z0-047 :2013-08-17 EXTERNAL TABLE――加载数据 ............................56
正确答案:C 一.对答案解释: A. TYPE:有两个选可供选择: 1. ORACLE_LOADER:传统方式,与SQLLDR一样,参数从多,应用较多. 2. ...
- jquery更新后怎样在一个站点中使用两个版本号的jQuery
公司眼下的项目中的右側导航菜单用到了bootstrap(v3.2.0)的affix.js(Affix插件)与scrospy.js(滚动监听)插件, 须要用到版本号>= 1.9.0的jquery, ...
- Android SDK代理服务器解决国内不能更新下载问题(转)
言:Android SDK代理服务器解决国内Android SDK不能更新下载问题,经常会遇到Fitch fail URL错误,要不就是Nothing was installed.目下Google遭受 ...
- PHP学习笔记十八【构造函数】
<?php class Person{ public $name; public $age; //定义构造函数 function 空格__construct 构造方法没有返回值,对象自动调用 p ...
- 对list代理扩展功能
package 动态代理扩展List; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; imp ...
- mysql的join
SELECT * FROM a LEFT JOIN b ON a.aID = b.bID; a为主,a的数据全显示,连不上b的对应字段为空 SELECT * FROM a RIGHT JOIN ...
- css基础-背景文本
css背景 1. background-color:#6495ed; 2. background-image:url('bgdesert.jpg'); 3. background-repeat:rep ...