在android开发中ListView是比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示。
列表的显示需要三个元素:

1.ListVeiw:用来展示列表的View。

2.适配器:用来把数据映射到ListView上的中介。

3.数据:具体的将被映射的字符串、图片,或者基本组件。

根据列表的适配器类型,列表分为三种,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter
其中以ArrayAdapter最为简单,只能展示一行字。SimpleAdapter有最好的扩充性,可以自定义出各种效果。 SimpleCursorAdapter可以认为是SimpleAdapter对数据库的简单结合,可以方面的把数据库的内容以列表的形式展示出来。

ArrayAdapter参数说明

ArrayAdapter(数组适配器)一般用于显示一行文本信息,所以比较容易。

构造函数

ArrayAdapter(Context context, int textViewResourceId)

ArrayAdapter(Context context, int resource, int textViewResourceId)

ArrayAdapter(Context context, int textViewResourceId, T[] objects)

ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects)

ArrayAdapter(Context context, int textViewResourceId, List<T> objects)

ArrayAdapter(Context context, int resource, int textViewResourceId, List<T> objects)

参数 

    context  运行着的视图的上下文。
    textViewResourceId  一个包含了TextView的布局xml文件的id。
    resource  ListView中Item项的复杂布局xml文件。
    objects  给ArrayAdapter提供数据的数组。

SimpleAdapter参数说明:

public SimpleAdapter (Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to)

构造函数
    参数
    context   关联SimpleAdapter运行着的视图的上下文。
    data        一个Map的列表。在列表中的每个条目对应列表中的一行,应该包含所有在from中指定的条目
    resource              一个定义列表项目的视图布局的资源唯一标识。布局文件将至少应包含哪些在to中定义了的名称。
    from       一个将被添加到Map上关联每一个项目的列名称的列表
    to    应该在参数from显示列的视图。这些应该全是TextView。在列表中最初的N视图是从参数from中最初的N列获取的值。

SimpleAdapter 可以定义各种各样的布局出来,可以放上ImageView(图片),还可以放上Button(按钮),CheckBox(复选框)等等。下面的代码都直接继承了ListActivity,如果程序的窗口仅仅为了显示一个列表,则可以直接让Activity继承ListActivity来实现,ListActivity的子类无需调用setContentView()来显示某个页面,而是可以直接传入一个Adapter,ListActivity的子类就呈现出一个列表。

SimpleCursorAdapter

SimpleCurosrAdapter 是一个将 Cursor 中的 columns 与在 XML 文件中定义的 TextViews 或 ImageViews 进行匹配的简易 adapter。你可以指定选择 Cursor 中的哪些 columns、用哪些 views 来显示这些 columns 、以及指定定义这些 views 的 xml 文件。 也就是说,SimpleCursorAdapter 允许绑定一个 Cursor 的 columns 到 ListView 上,并使用自定义的 layout 显示 List中的每个项目。可以使用 SimpleCursorAdapter 作为中间桥梁,将从 sqlite 数据库中查询出来的数据直接显示到 ListView 中。

public SimpleCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to)

构造函数
    参数

  Context context  这个与 SimpleListItemFactory 相关的 ListView 所处运行上下文(context)。也就是这个 ListView 所在的 Activity。

  layout  显示 list item 的 布局文件。这个 layout 文件中至少要包含在 "to" 参数中命名的 views。

  c  数据库的光标( Cursor )。如果 cursor 无效,则该参数可以为 null

  from  指定 column 中的哪些列的数据将绑定(显示)到 UI 中。如果 cursor 无效, 则该参数可为 null。

  to  指定用于显示 "from" 参数指定的数据列表的 views。 这些 views 必须都是 TextViews。 "from" 参数的前 N 个值(valus)和 "to" 参数的前 N 个 views 是一一对应的关系。如果 cursor 无效,则该参数可为 null。

SimpleAdapter列子
Main.java
package cn.test;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

public class Main extends Activity {
    private Button btn_viewItemAndText;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        initControl();
        setControlListener();
    }
    
    /**
     * 初始化控件
     */
    private void initControl(){
        btn_viewItemAndText=(Button)findViewById(R.id.btn_viewItemAndText);
    }
    
    /**
     * 增加控件监听
     */
    private void setControlListener(){
        btn_viewItemAndText.setOnClickListener(onClickViewItemAndTextListener);
    }
    
    /**
     * 图文列表按钮事件
     */
    private View.OnClickListener onClickViewItemAndTextListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Log.v("OnClick ", "btn_viewItemAndText");
            Intent intent = new Intent(Main.this, ItemAndTextListView.class);
            startActivity(intent);
        }
    };
}

ItemAndTextListView.java

package cn.test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.app.ListActivity;
import android.os.Bundle;
import android.widget.SimpleAdapter;

public class ItemAndTextListView extends ListActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

SimpleAdapter adapter = new SimpleAdapter(this,getData(),R.layout.listitem,
                new String[]{"ItemTitle","ItemText"},
                new int[]{R.id.ItemTitle,R.id.ItemText});
        setListAdapter(adapter);
    }

private List<Map<String, Object>> getData() {
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();

Map<String, Object> map = new HashMap<String, Object>();
        map.put("ItemTitle", "项目标题1");
        map.put("ItemText", "项目文字   1");
    
        list.add(map);

map = new HashMap<String, Object>();
        map.put("ItemTitle", "项目标题2");
        map.put("ItemText", "项目文字   2");

list.add(map);

map = new HashMap<String, Object>();
        map.put("ItemTitle", "项目标题3");
        map.put("ItemText", "项目文字   3");
        
        list.add(map);
        
        return list;
    }
}

main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    />
<Button android:layout_height="wrap_content" android:id="@+id/btn_viewItemAndText" android:text="标题加文字" android:layout_width="match_parent"></Button>

</LinearLayout>

listitem.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <LinearLayout android:orientation="vertical"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content">
       <TextView   
               android:layout_height="wrap_content"   
               android:layout_width="fill_parent"   
               android:id="@+id/ItemTitle"   
               android:textSize="20dip">  
       </TextView>  
       <TextView   
               android:layout_height="wrap_content"   
               android:layout_width="fill_parent"   
               android:id="@+id/ItemText">  
       </TextView> 
   </LinearLayout>
</LinearLayout>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="cn.test"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="8" />

<application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".Main"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
 
          <activity android:name=".ItemAndTextListView"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.itemAndTextListView" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
    </application>
</manifest>

Android控件学习笔记之 ListView相关推荐

  1. DXperience皮肤设置 C#第三方控件学习笔记

    用过DXperience .net版本以后,我发现这是个不错第三方控件.简单的说,就是开发软件用的界面库,支持VB和C#语言,至于其它语言我没有了解过.如果还有人问界面库又是什么?那就顺便也说一下.界 ...

  2. telerik grid ajax,Telerik ajax 控件学习笔记 - Ajax

    产品版本:RadControls for ASP.NET Ajax Q1 2009 Telerik 的控件实现 Ajax 的方式比 asp.net ajax 要简单些.有如下特点: 1. 不需要拖放很 ...

  3. Android 控件学习--自定义SeekBar

    从sdk中可以得知,它是ProgressBar的扩展,它比进度条多了一个功能就是可拖动性,这样用户就可以控制进度条,比如播放电影,用户可以通过拖动SeekBar进行快进与快退.       要实现其拖 ...

  4. Flutter基础之部分控件学习

    主要看几个常用的使用控件: main.dart 代码,下面常用 Widget 示例的代码. import 'package:flutter/material.dart';void main() =&g ...

  5. wxpython制作表格界面_[Python] wxPython 菜单栏控件学习总结(原创)

    1.总结 1.大体创建过程 1.创建一个 菜单栏 : menuBar = wx.MenuBar() 相当于这个白色地方,没有File这个菜单 2.创建 菜单 : fileMenu = wx.Menu( ...

  6. vb.net listview 删除选定行_VBA学习笔记59-1: listview控件

    学习资源:<Excel VBA从入门到进阶>第59集 by兰色幻想 本节学习Listview控件,它可以用多种视图方式显示项目的控件.由于其外形美观而且非常实用,所以使用频率很高. Lis ...

  7. IOS学习笔记(四)之UITextField和UITextView控件学习

    IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...

  8. Android群英传笔记——第三章:Android控件架构与自定义控件讲解

    Android群英传笔记--第三章:Android控件架构与自定义控件讲解 真的很久没有更新博客了,三四天了吧,搬家干嘛的,心累,事件又很紧,抽时间把第三章大致的看完了,当然,我还是有一点View的基 ...

  9. ListView控件学习系列2-编辑ListView(Edit,Update,Insert,Delete)

    目录: ListView控件学习系列1-了解ListView控件 ListView控件学习系列2-编辑ListView ListView控件学习系列3-ListView选择,排序,分页 ListVie ...

最新文章

  1. LLVM编译器基础架构与DragonEgg示例
  2. Android Studio 3.5 Canary 12 发布
  3. Linux例行工作crontab
  4. springboot系列八、springboot整合kafka
  5. 【MyBatis】MyBatis初体验
  6. 深度学习之循环神经网络(8)长短时记忆网络(LSTM)
  7. vue项目首屏加载过久处理笔记
  8. UTF8下的中文截取
  9. 磁盘IO单线程顺序写时最快的,如果多线程写,磁盘的磁头要不断重新寻址,所以写入速度反而会慢...
  10. 链接服务器 修改端口号,服务器修改远程链接端口号
  11. midi是计算机合成音乐文件,多媒体音频详解.ppt
  12. 三菱FX3U-485ADP-MB通讯三种变频器程序 已实现测试的变频器:施耐德ATV312, 三菱E700,台达VFD-M三款变频器,支持rtu的协议的变频器都可实现
  13. lighttpd 记录
  14. Python下载库pip pygame
  15. 【测试开发】一文带你了解什么是软件测试
  16. 10G整数文件中寻找中位数
  17. 列出所有的电影ID,名字和销售总额(以百万美元为单位计算)
  18. 【i.MX6ULL】驱动开发3——GPIO寄存器配置原理
  19. 回到1996,一起领略 JavaBeans 的真正力量
  20. ElementUI 表单单个验证

热门文章

  1. kindeditor在线html编辑器,kindeditor在线HTML编辑器
  2. php语句导入mysql_php如何将数据库导入mysql
  3. Python实现最简单的神经网络(数字识别)
  4. Spring Cloud中查看服务网关(Zuul)中的所有路由节点
  5. The service command supports only basic LSB actions (start, stop, restart, try-restart, reload, forc
  6. 1.详细说明微型计算机的组成,第1章微型计算机系统导论.ppt
  7. python超级关系_不可阻挡的超级语言--python
  8. linux初始化TCP服务失败,深入Linux系统追踪TCP初始化
  9. 核心网upf作用_核心网“入门级”科普,你看了没?
  10. 每个计算机主机有且只能有一块硬盘对不对,电子科技大学计算机基础试卷.doc...