Listview是用来展示一些重复性的数据用的,比如一些列表集合数据展示到手机,需要适配器作为载体获取数据,最后将数据填充到布局。

ListView里面的每个子项Item可以使一个字符串,也可以是一个组合控件。而适配器就是 Item数组,动态数组有多少元素就生成多少个Item;

ArrayAdapter数组适配器比较简单,适合纯文字。布局文件可以自己写,也可以用系统的。

ArrayAdapter适配器实例:

下载>>

归纳步骤:

1、准备数据源

2、新建适配器,绑定数据源

3、视图加载适配器

在布局文件中加入一个ListView控件:

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

程序中:适配器的作用是数据和视图之间的桥梁

list = (ListView)findViewById(R.id.list);

//定义数据源作为ListView内容
String [] arr_data = {"数据1","数据2","数据3","数据4"};
//新建一个数组适配器ArrayAdapter绑定数据,参数(当前的Activity,布局文件,数据源)
arr_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arr_data);
//视图(ListView)加载适配器
list.setAdapter(arr_adapter);

预览效果:

也可以使用自定义布局:

android.R.layout.simple_list_item_1

改为:

R.layout.name 里面只放一个TextView

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#ff0000"
/>

SimpleAdapter适配器实例:

相比ArrayAdapter,SimpleAdapter则有很强的扩展性,可以自定义出各种效果。

下载>>>

归纳步骤:

1、准备数据源:指定由Map组成的List数据源

2、新建适配器,设置键值名和对应控件id,绑定数据

3、视图加载适配器

先看一下SimpleAdapter 的构造函数:

new SimpleAdapter(context, data, resource, from, to)

参数:

context  ------SimpleAdapter关联的View的运行环境

data  ---------一个Map组成的List。在列表中的每个条目对应列表中的一行,每一个map中应该包含所有在from参数中指定的键

resource ------ 一个定义列表项的布局文件的资源ID。布局文件将至少应包含那些在to中定义了的ID

from ---------- 一个将被添加到Map映射上的键名

to  -------------将绑定数据的视图的ID,跟from参数对应

程序代码:

package com.example.testsimpleadapter;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map; import android.support.v7.app.ActionBarActivity;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.os.Bundle; public class MainActivity extends ActionBarActivity {
private ListView mylist;
private SimpleAdapter simp_ada;
private ArrayList<Map<String, Object>> arr_data; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list);
mylist = (ListView) findViewById(R.id.mylist); //每一行数据就是一个Map,指定由Map组成的List,
arr_data = new ArrayList<Map<String, Object>>(); // 新增数据
for (int i = 0; i < 20; i++) {
Map map = new HashMap<String, Object>();
//map放入两个键值对,键名与from对应,
map.put("pic", R.drawable.ic_launcher);
map.put("text", "数据" + i);
//往list添加数据
arr_data.add(map);
} // 新建适配器 ,绑定数据
String[] from = { "pic", "text" };
int[] to = { R.id.pic, R.id.text };
simp_ada = new SimpleAdapter(this, arr_data, R.layout.listitem,from,to); // 加载适配器
mylist.setAdapter(simp_ada);
} }
<?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"
> <ImageView
android:id="@+id/pic"
android:layout_marginLeft="6dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher" />
<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center_vertical"
android:text="文字"
/>
</LinearLayout>

Android:控件ListView列表项与适配器结合使用的更多相关文章

  1. [Android Pro] android控件ListView顶部或者底部也显示分割线

    reference to  :  http://blog.csdn.net/lovexieyuan520/article/details/50846569 在默认的Android控件ListView在 ...

  2. ListView控件的列表项的文字不满一行的时候,如何实现点击该列表项的空白区域仍可触发列表项的点击事件

    今天在做Demo的过程中,使用到了ListView.然而在实现过程中,发现一个出现了一个问题:只能点击列表项的文字区域可以触发点击事件,而点击列表项的空白区域无法触发点击事件. 如下图: listit ...

  3. android中RecyclerView控件的列表项横向排列

    本文是在上一篇文章的基础上做的修改:android中RecyclerView控件的使用 1.修改列表项news_item.xml:我这里是把新闻标题挪到了新闻图片的下面显示 <?xml vers ...

  4. PyQt学习随笔:ListView控件增加列表项

    ListView控件如果需要增加列表项,就是在对应数据存储中插入项,这又分两种情况,一种是已知列表数据存储,一种是未知数据存储.如果是未知数据存储,可以通过: ListView控件名.model() ...

  5. 安卓Android控件ListView获取item中EditText值

    可以明确,现在没有直接方法可以获得ListView中每一行EditText的值. 解决方案:重写BaseAdapter,然后自行获取ListView中每行输入的EditText值. 大概算法:重写Ba ...

  6. Android控件ListView获取item中EditText值

    能够明白,如今没有直接方法能够获得ListView中每一行EditText的值. 解决方式:重写BaseAdapter,然后自行获取ListView中每行输入的EditText值. 大概算法:重写Ba ...

  7. Android基础控件ListView和自定义BaseAdapter适配器

    1.简介 ListView用于列表显示,相当于OC中的TableView,和适配器一块使用,相关属性: footerDividersEnabled:是否在footerView(表尾)前绘制一个分隔条, ...

  8. Android基础控件ListView基础操作

    1.简介 基于Android基础控件ListView和自定义BaseAdapter适配器情况下,对ListView的数据删除和添加操作: public boolean add(E e) {//添加数据 ...

  9. VS2010/MFC编程入门之二十九(常用控件:列表视图控件List Control 下)

    上一节是关于列表视图控件List Control的上半部分,简单介绍了列表视图控件,其通知消息的处理和有关结构体的定义.本节继续讲解下半部分,包括列表视图控件的创建.CListCtrl类的主要成员函数 ...

随机推荐

  1. 文档生产工具 Doxygen

    Doxygen是一种开源跨平台的,类似JavaDoc风格描述的文档系统,支持C.C++.Java.Objective-C等语言.可以从一套归档源文件开始,生成HTML,XML,pdf等不同风格的格式. ...

  2. c++ primer (5)1

    第一章 1.包含来自标准库的头文件用<>,不属于标准库用"". 2.默认情况,读cin会刷新cout:程序非正常终止时也会刷新cout. 3.默认情况,cerr不缓冲, ...

  3. 十天学会零基础入门学习Photoshop课程(在线观看)

    适合人群:在校学生 在职工作者 淘宝运营者等一系列会操作电脑的人群 课程目录 试学课 课时11前言 8分钟1秒 课时22工作界面 试学课 课时33文件的新建 试学课 课时44文档保存 11分钟24秒  ...

  4. [DevExpress]设置RepositoryItemComboBox只可下拉选择不可编辑

    将TextEditStyle属性设置如下即可: 希望有所帮助!

  5. AngularJS(9)-表单

    AngularJS 表单是输入控件的集合 <!DOCTYPE html> <html lang="en"> <head> <meta ch ...

  6. Dapper.ColumnMapper 的使用

    using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; usin ...

  7. xampp下安装yii框架下遇到的问题

    用yii框架来生成web目录是输入E:\xampp\htdocs\yii\framework/yiic webapp E:\xampp\htdocs\web 时提示php不是内部命令,也不是... 这 ...

  8. C中浮点数转字符串

    求浮点数转换成字符串,如何才能获得比较正确的字符串.用printf("%f\n", (float)5); 这种方式转换出来的结果是 5.000000 ,末尾都会带6位小数. 控制精 ...

  9. UVA 11722

    You are going from Dhaka to Chittagong by train and you came to know one of your old friends is goin ...

  10. Oracle回收站

    回收站是删除对象使用的存储空间.可以使用实例参数recyclebin禁用回收站,默认是on,可以为某个会话或系统设置为off或on.所有模式都有一个回收站. 当表空间不足时可以自动重用回收站对象占用的 ...