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,也增 ...
随机推荐
- 用户登陆,退出等基本Action
用户登陆页面user_login.jsp对应action为login.do: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transiti ...
- blockUI
组件主页 主要使用到 blockUI 组件实现 将jquery和组件的JS下载到本地 然后直接就可以实现遮罩层功能 显示遮罩层:$.blockUI(); 隐藏遮罩层:$.unblockUI(); 该网 ...
- UVA247- Calling Circles(有向图的强连通分量)
题目链接 题意: 给定一张有向图.找出全部强连通分量,并输出. 思路:有向图的强连通分量用Tarjan算法,然后用map映射,便于输出,注意输出格式. 代码: #include <iostrea ...
- 分享一个3D球面标签云
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- EasyUI 1.3.1以下的组合验证
适用于EasyUI 1.3.1以下的, 1.3.2已经自带组合验证(如validType:['validator1','validator2']) $.extend($.fn.validatebox. ...
- 探究foreach对于迭代变量的封装性的研究
众所周知教科书上对于foreach之中的注释是在遍历过程中无法改变其遍历的元素例如声明一个数组 ,,,}; foreach(int m in ii){ m = ;//错误 “m”是一个“foreach ...
- java String常见的处理
import java.util.Arrays; class Demo5 { public static void main(String [] args) { String name1=" ...
- iOS开发 数据库FMDB
iOS开发 数据库FMDB 1.简介 需求作用: 如果需要保存大量的结构较为复杂的数据时候, 使用数据库, 例如交规考试项目 常用的数据库: (1)Microsoft SQL Server 2000 ...
- 求一无序数组中第n大的数字 - 快速选择算法
逛别人博客的时候,偶然看到这一算法题,顺便用C++实现了一下. 最朴素的解法就是先对数组进行排序,返回第n个数即可.. 下面代码中用的是快速选择算法(不晓得这名字对不对) #include <v ...
- (原)Ubuntu14中安装GraphicsMagick
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5661439.html 参考网址: http://comments.gmane.org/gmane.co ...