android学习之ListView如何使用
2014-08-31
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的代码如下:
- public class MainActivity extends Activity implements OnClickListener{
- private Button btnArray,btnSimple,btnSimpleCursor;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- getWidgetInstance();
- btnArray.setOnClickListener(this);
- btnSimple.setOnClickListener(this);
- btnSimpleCursor.setOnClickListener(this);
- }
- public void getWidgetInstance() {
- btnArray = (Button)findViewById(R.id.btnArray);
- btnSimple = (Button)findViewById(R.id.btnSimple);
- btnSimpleCursor = (Button)findViewById(R.id.btnSimpleCursor);
- }
- @Override
- public void onClick(View v) {
- int id = v.getId();
- switch(id) {
- case R.id.btnArray:
- Intent intent_array = new Intent(MainActivity.this,ArrayAdapterActivity.class);
- MainActivity.this.startActivity(intent_array);
- break;
- case R.id.btnSimple:
- Intent intent_simple = new Intent(MainActivity.this,SimpleAdapterActivity.class);
- MainActivity.this.startActivity(intent_simple);
- break;
- case R.id.btnSimpleCursor:
- Intent intent_cursor = new Intent(MainActivity.this,SimpleCursorAdapterActivity.class);
- MainActivity.this.startActivity(intent_cursor);
- break;
- }
- }
- }
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="ListView使用示例"
- android:gravity="center"
- android:textColor="#EEE"
- android:textStyle="bold"
- android:textSize="25sp"
- />
- <Button
- android:id="@+id/btnArray"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="show ArrayAdapter"
- />
- <Button
- android:id="@+id/btnSimple"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="show SimpleAdapter"
- />
- <Button
- android:id="@+id/btnSimpleCursor"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="show SimpleCursorAdapter"
- />
- </LinearLayout>
主界面有三个Button,每一个Button对应相应的数据源,显示出ListActivity。
主界面截图:
接着,编写三个不同数据源的Activity
第一种:ArrayAdapter
ArrayAdapter是三种数据源中最简单的Adapter,只能显示一行文字
ArrayAdapter.java的代码如下:
- public class ArrayAdapterActivity extends ListActivity {
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- //列表项的数据
- String[] strs = {"1","2","3","4","5"};
- ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1,strs);
- setListAdapter(adapter);
- }
- }
运行结果:
第二种:SimpleAdapterActivity
SimpleAdapterActivity需要自定义每一项显示的布局方式:
所以simple.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"
- >
- <ImageView
- android:id="@+id/img"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_margin="5dp"
- />
- <TextView
- android:id="@+id/title"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textColor="#ffffff"
- android:textSize="20sp"
- />
- </LinearLayout>
SimpleAdapterActivity.java代码如下:
- public class SimpleAdapterActivity extends ListActivity {
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- SimpleAdapter adapter = new SimpleAdapter(this, getData(), R.layout.simple, new String[] { "title", "img" }, new int[] { R.id.title, R.id.img });
- setListAdapter(adapter);
- }
- private List<Map<String, Object>> getData() {
- //map.put(参数名字,参数值)
- List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
- Map<String, Object> map = new HashMap<String, Object>();
- map.put("title", "摩托罗拉");
- map.put("img", R.drawable.icon);
- list.add(map);
- map = new HashMap<String, Object>();
- map.put("title", "诺基亚");
- map.put("img", R.drawable.icon);
- list.add(map);
- map = new HashMap<String, Object>();
- map.put("title", "三星");
- map.put("img", R.drawable.icon);
- list.add(map);
- return list;
- }
- }
运行结果如下:
第三种:SimpleCursorAdapterActivity
SimpleCursorAdapterActivity是依赖于数据库的一种数据源,这里为了方便我就不重新建一个数据库,然后插入数据了,我就用读取联系人姓名的方式为例和大家做一个简单的介绍。
SimpleCursorAdapterActivity.xml代码如下:
- public class SimpleCursorAdapterActivity extends ListActivity {
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- //获得一个指向系统通讯录数据库的Cursor对象获得数据来源
- Cursor cur = getContentResolver().query(People.CONTENT_URI, null, null, null, null);
- startManagingCursor(cur);
- //实例化列表适配器
- ListAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, cur, new String[] {People.NAME}, new int[] {android.R.id.text1});
- setListAdapter(adapter);
- }
- }
这里特别需要注意的一点是:不要忘了在AndroidManifest.xml文件中加入权限
<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>
运行结果如下图:
至此所有关于ListView的简单知识点介绍完毕。欢迎大家留言交流。
转载于:https://www.cnblogs.com/leifengcomrade/p/3947679.html
android学习之ListView如何使用相关推荐
- Android学习笔记-ListView
今天主要是学习了ListView控件.先把代码粘一下. package com.eoeAndroid.list; import java.util.ArrayList; import java.uti ...
- android学习笔记----ListView和各种适配器简介
学习笔记 目录 打气筒(LayoutInflater对象)介绍: ArrayAdapter用法: 关于具有自定义 ArrayAdapter 的示例应用见这里: SimpleAdapter用法: 关于L ...
- Android学习笔记ListView
在手机实际应用中,我们常常需要列表来显示我们的信息,比如我们的联系人列表,短信信息列表等.在Android中通过ListView来实现. ListView 的XML属性 属性名称 描述 android ...
- Android学习之——ListView下拉刷新
背景知识 ListView使用非常广泛,对于使用ListView的应用来说,下拉刷新是必不可少要实现的功能. 我们常用的微博.网易新闻,搜狐新闻都使用了这一功能,如下图所示. 微博 搜狐新闻 ...
- 2月24日android学习笔记——ListView
ListView 以垂直的形式显示所有的列表项 ListView只是容器,而里面的内容需要Adapter来负责提供每个"列表项"的组件. 在ListView的xml中,可以设置an ...
- 【Android 学习】之ListView使用大全
Android 学习之ListView使用大全 ListView是列表组件,是android中常用的组件,列表显示信息由三个部分组成. ListView组件. 适配器,用来将用来显示的数据映射到Lis ...
- android创建布局文件,android学习——Android Studio下创建menu布局文件
一.问题: android studio项目中没有看到menu文件夹: 在android studio项目中想要添加menu布局文件,一开始我的做法是:直接在res文件夹右键选择xml文件来添加,如下 ...
- Android学习系列(10)--App列表之拖拽ListView(上)
研究了很久的拖拽ListView的实现,受益良多,特此与尔共飨. 鉴于这部分内容网上的资料少而简陋,而具体的实现过程或许对大家才有帮助,为了详尽而不失真,我们一步一步分析,分成两篇文章. ...
- Android学习系列(15)--App列表之游标ListView(索引ListView)
游标ListView,提供索引标签,使用户能够快速定位列表项. 也可以叫索引ListView,有的人称也为Tweaked ListView,可能更形象些吧. 一看图啥都懂了: ...
- 解决Android学习之ScollView嵌套ListView和GridView问题
Android学习之ScollView嵌套ListView和GridView问题,gridview与这种写法一样 import android.content.Context; import andr ...
最新文章
- BZOJ1747 [Usaco2005 open]Expedition 探险
- 如何设计一款暗度陈仓的反爬虫
- 清华大学副校长杨斌在“双创”教育论坛暨经验研讨会开幕式上致辞:创新创业教育与大学未来...
- “开源”将成为物联网开发生态链的标准
- python教程下载视频-python怎么下载视频
- 互联网周刊:谁是下一个IE?
- ArcGIS9.3全套下载地址
- 第一章 概率论的基本概念
- linux tee 重定向_快乐的linux命令行-重定向
- oracle11g关闭库,Oracle11g中SYS连接阻止关闭数据库
- Android Studio创建侧滑菜单使用心得
- 格式工厂 wav 比特率_智能音乐格式转换
- 计算机加域和用户权限分配关系,加入域需要什么样的权限?
- java查询ip归属地
- java openoffic linux_windows/linux服务器上java使用openoffice将word文档转换为PDF(亲测可用)...
- 山重水复疑无路_最快下降问梯度(深度学习入门系列之七)
- Dynamics CRM IFD部署后延长系统注销时间
- PostgreSQL 源码解读(216)- 实现简单的扩展函数
- Mathematica 作图详解
- 2019前端学习路线图