Android之ListActivity(一):布局与数据绑定

2023-05-16

 

Android中的列表,当然也可以用ListView来完成所需要的功能,用法是一样的。

废话不说,来关键的。

LiveActivity本身继承了关于List操作的众多接口,我们可以方便的重写这些操作中需要的方法来实现自己需要的功能。

如果要用ListActivity,则 ActivityLayout文件中必须包括一个(只能一个)ListView,且ListViewid= "@id/android:list"

如下代码,一个标准的ListActivity Layout文件:

 <?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"
         
android:paddingLeft="8dp"
         
android:paddingRight="8dp">
 
     
<ListView android:id="@id/android:list"
               
android:layout_width="fill_parent"
               
android:layout_height="fill_parent"
               
android:background="#00FF00"
               
android:layout_weight="1"
               
android:drawSelectorOnTop="false"/>
 
     
<TextView id="@id/android:empty"
               
android:layout_width="fill_parent"
               
android:layout_height="fill_parent"
               
android:background="#FF0000"
               
android:text="No data"/>
 
</LinearLayout>

请注意 ListView与TextView的id。前面说了,ListView的Id为固定不变的,为”@./idandroid:ost”,ListActivity会根据id自动查找ListView引用;但如果当ListView中没有值而又想提示一句话时,那么用于指定显示提示信息的TextView的id 必须为”"@id/android:empty",提示的信息可以通过android:text进行指定。

 

OK,关于如何布局说完了,那么如何给List绑定值,并进行操作呢?

首先我们需要确实的是,ListView的布局也完成了,并通过调用setContentView(…)进行了绑定,但直到现在我们还没有确定ListView中的第一行显示的格式是什么,是直接显示文字还是要“图文并茂”的显示。

Android系统为我们提供了多种模板进行选择(android.R.layout),如

Ø Simple_list_item_1 每项有一个TextView

Ø Simple_list_item_2 每项有两个TextView

Ø Simple_list_item_checked CheckView的项

Ø Simple_list_item_multiple_choise 每项有一个TextView并可以多选

Ø Simple_list_item_single_choice 每项有一个TextView,但只能进行单选。

 

但然,如果以上项模板还无法满足你的要求,那只能自定义模板了(相当简单,就是定义一个layout布局)。如果你做的asp.net的开发的话,是否对dataList控件有印象呢。如果对DataList有印象,那么理解ListView也就相当的简单了。

自定义模板可以根据自己的需要定义成任意的格式,包括图片、方案及其他可显示的View,不用多说,自己定义就好了,关键是如果使用并进行模板的绑定。

如何要对ListView进行数据绑定,必须使用到一个接口:Adapter

其中最经常与ListView进行配合使用的有ArrayAdapter CursorAdapterSimpleAdapter等。

从名称可以看出ArrayAdapter使用的是一个ArrayAdapter做为数据源,SimpleCursorAdapter使用的是一个Cursor使用数据源,都比较容易理解,那么如何使用SimpleAdapter作为数据的适配器呢。Ok,从易到难。

ArrayAdapter:

 

 String[] data = { "Item1", "Item2",

        "Item3", "Item4", "Item5" };

 listView.setAdapter(new ArrayAdapter<String>(this,

     android.R.layout.simple_list_item_single_choice, data));  

 

SimpleCursorAdapter:

 //从数据库中查询Cursor

   cursor = adapter.getAllNotes();

   startManagingCursor(cursor);

  

   //设置要显示的数据源中的列名(需要包含在cursor中)

   String[] from = new String[] { DiaryDbAdapter.KEY_COLUMN_TITLE,

                DiaryDbAdapter.KEY_COLUMN_CREATEED };

  

   //显示的View(自定义模板中的View

   int[] to = new int[] { R.id.txtRowTitle, R.id.txtRowCreateed };

   //绑定

   SimpleCursorAdapter notes = new SimpleCursorAdapter(this,

                R.layout.diaryrow, cursor, from, to);

   setListAdapter(notes);

 

SimpleAdapter:

   SimpleAdapter将一个List做为数据源,可以让ListView进行更加个性化的显示。而List中的第一项是个Map<String,?>(用到泛型),其中Map中的每项将与ListView中的每项进行一一对应绑定。Ok,看一下构造:

   SimpleAdapter(Context context,List<? Extends Map<String,?>> data,int resource,String [] form, int [] to);

 

² Context:当前上下文,一般把Activity.this传递进行。

² Data: 数据源。

² Resource: 自定义的layout模板资源,可以用 R.layout.xxx获取引用。

² Form: 定义ListView中的每一项数据索引,索引来自于Map<String,?>,即指定要显示的内容。

² To:View数组,在ListView模板中的定义View,Form中需要一一对应。

事例代码:

      List<Hashtable<String, Object>> listContent

= new ArrayList<Hashtable<String, Object>>();

 

      for (int i = 0; i < deviceList.size(); i++) {

         Hashtable<String, Object> table

= new Hashtable<String, Object>();

         table.put("name", deviceList.get(i).Name);

         table.put("address", deviceList.get(i).Address);

         table.put("type", deviceList.get(i).Type + "");  

 

         listContent.add(table);

      }

 

      adapter = new SimpleAdapter(HeartActivity.this,

listContent, R.layout.child, //自定义的layout

 new String[] { "name", "address" },

 new int[] {R.id.txtDeviceName, R.id.txtDeviceAddress });

 

      setListAdapter(adapter);

以上代码使用了Hashtable做为一个Map,并添加到一个List<Hashtable<String, Object>>当中。

之后 new 一个 SimpleAdapter ,注意 SimpleAdapter 是如何生成的。

转载于:https://www.cnblogs.com/wservices/archive/2010/06/17/1759793.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android之ListActivity(一):布局与数据绑定 的相关文章

随机推荐

  • mariadb数据库文件的组成

    一 日志文件 1 错误日志 xff1a error log 错误日志记录msyql运行过程中所有较为严重的警告和错误信息 xff0c 以及mariadb server 每一次启动和关闭的详细信息 xff0c 事件调度运行一个事件时产生的信息
  • FTP中的授权规则

    在授权规则中 xff0c 你可以管理自己的FTP站点以怎样的方式进行访问 xff0c 比如每个进入站点的人都需要输入用户名密码 正则可以在授权规则中删除默认的配置 允许匿名用户读取 的规则 也可以在此处 xff0c 对不同的组或用户进行粒度
  • docker应用实例——httpd

    docker可以用来创建虚拟环境跑应用 xff0c 各个应用能起到隔离作用 步骤也很简单 xff0c 就是获取 下拉镜像 应用 xff0c 然后进行安装就可以了 1 搜索镜像 xff0c 比如我想虚拟一个httpd应用 xff0c 可以看到
  • curl: (1) Protocol "'http" not supported or disabled in libcurl

    Windows下安装Curl 下载的64位版本 下载后 xff0c 将以下文件复制到 D Windows 目录下 注意 xff1a 我的系统在D盘 但是使用以下命令时 xff1a curl X GET 39 http localhost 9
  • ios UILabel 字体设置 大全

    2019独角兽企业重金招聘Python工程师标准 gt gt gt code UILabel垂直居上对齐 label sizeToFit 设置文字过长时的显示格式 label lineBreakMode 61 UILineBreakMode
  • Activity关于onConfigurationChanged方法

    方法介绍 方法 xff1a public void onConfigurationChanged Configuration newConfig 场景 xff1a 当系统的 配置信息 发生改变时 xff0c 系统会调用此方法 前提是 xff
  • Ubuntu server10.4实现自动登录

    下面是网上找的方法 xff1a 注意 这里的修改要非常小心 xff0c 出来命令不能敲错之外 xff0c 一定要记得执行 chmod 43 x autologin xff0c 不然搞不好可能会导致启动不了 xff0c 我在操作的时候就因为忘
  • FTP服务器之身份验证、授权及隔离详解

    FTP 服务器之身份验证 授权及隔离 贰零壹叁年拾月国庆假期 YoloSntim 简介 Windows 中较为基本服务器功能 xff0c 提供文件上下载功能 可单服务器管理 xff0c 亦可与域集成在一起 网上有许多介绍及教程 xff0c
  • C++到底还能做什么?

    嗯 xff0c 这是一位朋友发到我邮箱里面的 xff0c 很奇怪 xff0c 发到了gmail邮箱 xff0c 而不是我常用的hotmail邮箱哈 我呢 xff0c 试着回答一下 xff0c 如果回答得不好 xff0c 叫做肖某人学艺不精
  • 年月日时的天干推算方法

    年干推算方法 公历年号计算农历年干支的方法与公式 查出公元4年为 甲子 年 故计算公式设公元后减3 xff1b 公元前减2 公元后农历年干支的计算方法 xff1a 天干计算 xff1a 公历年号的个位数 3即为天干序号 xff1b 个位为0
  • mariadb 的安装及基本配置

    mariadb 的由来 MariaDB数据库管理系统是MySQL的一个分支 xff0c 主要由开源社区在维护 xff0c 采用GPL授权许可 开发这个分支的原因之一是 xff1a 甲骨文公司收购了MySQL后 xff0c 有将MySQL闭源
  • ubuntu软件位置(安装位置, 运行文件位置, 缓存位置)

    Ubuntu软件安装位置 xff0c 一般都在 usr bin下 xff0c 个别可能会安装到 usr share和 usr local里 xff0c 一 查看软件安装的所有路径 xff1a 要知道文件都安装在哪些地方 放在哪些文件夹里 x
  • 虚拟机CentOS6.9实现命令行与图形化界面相互切换的方法以及Linux初学几个比较有意思的命令...

    下面介绍一下我当前电脑图形化界面与命令行界面切换的状态 xff1a 只能通过快捷键Ctrl 43 Alt 43 F4建立一个 dev tty4 的终端 xff08 F1 F7 皆不可用 xff09 xff0c 不能用快捷键返回图形化界面 通
  • Powershell 之压缩

    当管理的系统越来越多 xff0c 协助开发通过日志查找问题 xff0c 相信是很多运维人员在日常工作中最头疼的问题 xff0c 反复调试 xff0c 来回调取日志 xff0c 在这种情况下 xff0c 系统的日志模式也必须调整为info级别
  • 有关圆排列问题——m个相同的元素和n个不同的元素的圆排列解法。

    根据圆排列规则 xff0c 先将n 43 m个元素进行线排列有 xff08 m 43 n xff01 m 种 xff1b 又每m 43 n种线排列对应1种圆排列 xff1b 所以圆排列的种数为 xff08 m 43 n 1 xff09 xf
  • 辽工大计算机网络实验报告,辽工大计算机硬件实验报告.doc

    辽宁工程技术大学上机实验报告 成绩 优 课程名称 计算机硬件基础 实验题目 综合程序设计 三 院系 软件学院 专业 网络工程 班级 09 2 姓名 母涵予 学号 0920020214 实验日期 10 17 实验 目的 1 xff0e 熟练掌
  • Docker基础命令使用

    Docker基础命令 本文主要基于上一片篇docker安装 xff0c 来演示命令使用方法 xff0c docker安装 1 Docker Hub搜索镜像 docker search 关键字 选项 xff1a automated 61 fa
  • C++ 工程实践(2):不要重载全局 ::operator new()

    陈硕 giantchen AT gmail Blog csdn net Solstice 本文只考虑 Linux x86 平台 xff0c 服务端开发 xff08 不考虑 Windows 的跨 DLL 内存分配释放问题 xff09 本文假定
  • An unexpected error occured when contacting the server .

    I logged into to the arcsight command center however I found an unexpected error occurred when contacting the server Ple
  • Android之ListActivity(一):布局与数据绑定

    Android中的列表 xff0c 当然也可以用 ListView来完成所需要的功能 xff0c 用法是一样的 废话不说 xff0c 来关键的 LiveActivity本身继承了关于 List操作的众多接口 xff0c 我们可以方便的重写这