2014-08-31

标签:数据源 listview android 移动开发 ListActivity       

ListView是Android一系列组件之一,它以垂直列表的方式列出所需的列表项。实现方式有两种:  * 第一种:使用ListView组件  * 第二种:当前的Activity继承ListActivity

ListView是需要绑定数据源的----->ArrayAdapter、SimpleAdapter、SimpleCursorAdapter

需要注意的是SimpleCursorAdapter要以数据库作为数据源的时候才使用。

来自SDK的描述:

A view that shows items in a vertically scrolling list. The items come from the ListAdapter associated with this view.

接下来就三种不同的数据源我写了一个例子,和大家一起来好好学习一下ListView。

首先,新建一个Android项目--->取名ListViewDemo

MainActivity.java的代码如下:

  1. public class MainActivity extends Activity implements OnClickListener{
  2. private Button btnArray,btnSimple,btnSimpleCursor;
  3. /** Called when the activity is first created. */
  4. @Override
  5. public void onCreate(Bundle savedInstanceState) {
  6. super.onCreate(savedInstanceState);
  7. setContentView(R.layout.main);
  8. getWidgetInstance();
  9. btnArray.setOnClickListener(this);
  10. btnSimple.setOnClickListener(this);
  11. btnSimpleCursor.setOnClickListener(this);
  12. }
  13. public void getWidgetInstance() {
  14. btnArray = (Button)findViewById(R.id.btnArray);
  15. btnSimple = (Button)findViewById(R.id.btnSimple);
  16. btnSimpleCursor = (Button)findViewById(R.id.btnSimpleCursor);
  17. }
  18. @Override
  19. public void onClick(View v) {
  20. int id = v.getId();
  21. switch(id) {
  22. case R.id.btnArray:
  23. Intent intent_array = new Intent(MainActivity.this,ArrayAdapterActivity.class);
  24. MainActivity.this.startActivity(intent_array);
  25. break;
  26. case R.id.btnSimple:
  27. Intent intent_simple = new Intent(MainActivity.this,SimpleAdapterActivity.class);
  28. MainActivity.this.startActivity(intent_simple);
  29. break;
  30. case R.id.btnSimpleCursor:
  31. Intent intent_cursor = new Intent(MainActivity.this,SimpleCursorAdapterActivity.class);
  32. MainActivity.this.startActivity(intent_cursor);
  33. break;
  34. }
  35. }
  36. }

main.xml的布局:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. >
  7. <TextView
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content"
  10. android:text="ListView使用示例"
  11. android:gravity="center"
  12. android:textColor="#EEE"
  13. android:textStyle="bold"
  14. android:textSize="25sp"
  15. />
  16. <Button
  17. android:id="@+id/btnArray"
  18. android:layout_width="wrap_content"
  19. android:layout_height="wrap_content"
  20. android:text="show ArrayAdapter"
  21. />
  22. <Button
  23. android:id="@+id/btnSimple"
  24. android:layout_width="wrap_content"
  25. android:layout_height="wrap_content"
  26. android:text="show SimpleAdapter"
  27. />
  28. <Button
  29. android:id="@+id/btnSimpleCursor"
  30. android:layout_width="wrap_content"
  31. android:layout_height="wrap_content"
  32. android:text="show SimpleCursorAdapter"
  33. />
  34. </LinearLayout>

主界面有三个Button,每一个Button对应相应的数据源,显示出ListActivity。

主界面截图:

接着,编写三个不同数据源的Activity

第一种:ArrayAdapter

ArrayAdapter是三种数据源中最简单的Adapter,只能显示一行文字

ArrayAdapter.java的代码如下:

  1. public class ArrayAdapterActivity extends ListActivity {
  2. @Override
  3. public void onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. //列表项的数据
  6. String[] strs = {"1","2","3","4","5"};
  7. ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1,strs);
  8. setListAdapter(adapter);
  9. }
  10. }

运行结果:

第二种:SimpleAdapterActivity

SimpleAdapterActivity需要自定义每一项显示的布局方式:

所以simple.xml的代码如下:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. >
  7. <ImageView
  8. android:id="@+id/img"
  9. android:layout_width="wrap_content"
  10. android:layout_height="wrap_content"
  11. android:layout_margin="5dp"
  12. />
  13. <TextView
  14. android:id="@+id/title"
  15. android:layout_width="wrap_content"
  16. android:layout_height="wrap_content"
  17. android:textColor="#ffffff"
  18. android:textSize="20sp"
  19. />
  20. </LinearLayout>

SimpleAdapterActivity.java代码如下:

  1. public class SimpleAdapterActivity extends ListActivity {
  2. @Override
  3. public void onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. SimpleAdapter adapter = new SimpleAdapter(this, getData(), R.layout.simple, new String[] { "title",  "img" }, new int[] { R.id.title, R.id.img });
  6. setListAdapter(adapter);
  7. }
  8. private List<Map<String, Object>> getData() {
  9. //map.put(参数名字,参数值)
  10. List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
  11. Map<String, Object> map = new HashMap<String, Object>();
  12. map.put("title", "摩托罗拉");
  13. map.put("img", R.drawable.icon);
  14. list.add(map);
  15. map = new HashMap<String, Object>();
  16. map.put("title", "诺基亚");
  17. map.put("img", R.drawable.icon);
  18. list.add(map);
  19. map = new HashMap<String, Object>();
  20. map.put("title", "三星");
  21. map.put("img", R.drawable.icon);
  22. list.add(map);
  23. return list;
  24. }
  25. }

运行结果如下:

第三种:SimpleCursorAdapterActivity

SimpleCursorAdapterActivity是依赖于数据库的一种数据源,这里为了方便我就不重新建一个数据库,然后插入数据了,我就用读取联系人姓名的方式为例和大家做一个简单的介绍。

SimpleCursorAdapterActivity.xml代码如下:

  1. public class SimpleCursorAdapterActivity extends ListActivity {
  2. @Override
  3. public void onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. //获得一个指向系统通讯录数据库的Cursor对象获得数据来源
  6. Cursor cur = getContentResolver().query(People.CONTENT_URI, null, null, null, null);
  7. startManagingCursor(cur);
  8. //实例化列表适配器
  9. ListAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, cur, new String[] {People.NAME}, new int[] {android.R.id.text1});
  10. setListAdapter(adapter);
  11. }
  12. }

这里特别需要注意的一点是:不要忘了在AndroidManifest.xml文件中加入权限

<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>

运行结果如下图:

至此所有关于ListView的简单知识点介绍完毕。欢迎大家留言交流。

转载于:https://www.cnblogs.com/leifengcomrade/p/3947679.html

android学习之ListView如何使用相关推荐

  1. Android学习笔记-ListView

    今天主要是学习了ListView控件.先把代码粘一下. package com.eoeAndroid.list; import java.util.ArrayList; import java.uti ...

  2. android学习笔记----ListView和各种适配器简介

    学习笔记 目录 打气筒(LayoutInflater对象)介绍: ArrayAdapter用法: 关于具有自定义 ArrayAdapter 的示例应用见这里: SimpleAdapter用法: 关于L ...

  3. Android学习笔记ListView

    在手机实际应用中,我们常常需要列表来显示我们的信息,比如我们的联系人列表,短信信息列表等.在Android中通过ListView来实现. ListView 的XML属性 属性名称 描述 android ...

  4. Android学习之——ListView下拉刷新

    背景知识 ListView使用非常广泛,对于使用ListView的应用来说,下拉刷新是必不可少要实现的功能. 我们常用的微博.网易新闻,搜狐新闻都使用了这一功能,如下图所示.     微博 搜狐新闻 ...

  5. 2月24日android学习笔记——ListView

    ListView 以垂直的形式显示所有的列表项 ListView只是容器,而里面的内容需要Adapter来负责提供每个"列表项"的组件. 在ListView的xml中,可以设置an ...

  6. 【Android 学习】之ListView使用大全

    Android 学习之ListView使用大全 ListView是列表组件,是android中常用的组件,列表显示信息由三个部分组成. ListView组件. 适配器,用来将用来显示的数据映射到Lis ...

  7. android创建布局文件,android学习——Android Studio下创建menu布局文件

    一.问题: android studio项目中没有看到menu文件夹: 在android studio项目中想要添加menu布局文件,一开始我的做法是:直接在res文件夹右键选择xml文件来添加,如下 ...

  8. Android学习系列(10)--App列表之拖拽ListView(上)

    研究了很久的拖拽ListView的实现,受益良多,特此与尔共飨.       鉴于这部分内容网上的资料少而简陋,而具体的实现过程或许对大家才有帮助,为了详尽而不失真,我们一步一步分析,分成两篇文章. ...

  9. Android学习系列(15)--App列表之游标ListView(索引ListView)

    游标ListView,提供索引标签,使用户能够快速定位列表项.       也可以叫索引ListView,有的人称也为Tweaked ListView,可能更形象些吧.       一看图啥都懂了: ...

  10. 解决Android学习之ScollView嵌套ListView和GridView问题

    Android学习之ScollView嵌套ListView和GridView问题,gridview与这种写法一样 import android.content.Context; import andr ...

最新文章

  1. BZOJ1747 [Usaco2005 open]Expedition 探险
  2. 如何设计一款暗度陈仓的反爬虫
  3. 清华大学副校长杨斌在“双创”教育论坛暨经验研讨会开幕式上致辞:创新创业教育与大学未来...
  4. “开源”将成为物联网开发生态链的标准
  5. python教程下载视频-python怎么下载视频
  6. 互联网周刊:谁是下一个IE?
  7. ArcGIS9.3全套下载地址
  8. 第一章 概率论的基本概念
  9. linux tee 重定向_快乐的linux命令行-重定向
  10. oracle11g关闭库,Oracle11g中SYS连接阻止关闭数据库
  11. Android Studio创建侧滑菜单使用心得
  12. 格式工厂 wav 比特率_智能音乐格式转换
  13. 计算机加域和用户权限分配关系,加入域需要什么样的权限?
  14. java查询ip归属地
  15. java openoffic linux_windows/linux服务器上java使用openoffice将word文档转换为PDF(亲测可用)...
  16. 山重水复疑无路_最快下降问梯度(深度学习入门系列之七)
  17. Dynamics CRM IFD部署后延长系统注销时间
  18. PostgreSQL 源码解读(216)- 实现简单的扩展函数
  19. Mathematica 作图详解
  20. 2019前端学习路线图

热门文章

  1. Zookeeper C API 指南三(回调函数)
  2. java中访问权限的设置
  3. Mac vscode花屏问题解决
  4. Redis命令回溯方案
  5. php 管理数组数据库,【PHP】一个用PHP数组管理数据库表结构更新功能的烂代码~...
  6. MyBatis的XML配置文件(三)
  7. JavaScript之字符串类型
  8. 广度(宽度)优先搜索思路总结
  9. Numpy系列(四)常用数学统计函数
  10. 学习python3(一)