Android学习之——ListView

背景知识

ListView在Android应用中使用非常广泛,手机上必备的微博、网易新闻等,都使用了ListView。

                  

定义

ListView是一个展示可滚动项的列表的视图集合(View Group)。通过适配器(Adapter)从内容源(例如一个数组或数据库查询)取得内容

然后将每个项转化为呈现在列表中的View,列表项自动地被插入到列表中。

Demo

ListView的实现过程:

准备数据---->使用动态数组保存数据----->构建Adapter(适配器)----->添加Adapter到listView上,并显示

 MainActivity代码

 1 package com.johntsai.listviewdemo;
 2
 3 import java.util.ArrayList;
 4 import java.util.HashMap;
 5 import java.util.List;
 6 import java.util.Map;
 7
 8 import android.app.Activity;
 9 import android.os.Bundle;
10 import android.view.View;
11 import android.widget.AdapterView;
12 import android.widget.AdapterView.OnItemClickListener;
13 import android.widget.ListView;
14 import android.widget.SimpleAdapter;
15 import android.widget.Toast;
16
17 public class MainActivity extends Activity {
18     private ListView listView;
19     private SimpleAdapter adapter;
20     //准备数据
21     private String[] listTitle = {
22             "2015年春运火车票今起发售",
23             "马尔代夫遭淡水危机 中国送水",
24             "中国5架战机飞跃日本宫古海峡"
25     };
26     private String[] listContent = {
27             "可用网络、电话购票,3个时段可尝试\"捡漏\"",
28             "淡水生产装置受损,淡水供应告急,15万居民面临水荒",
29             "于6日飞跃宫古海峡,赴西太平洋训练"
30     };
31     private List<Map<String,Object>> listItems;
32     //保存数据
33     private void getData(){
34         listItems = new
35                 ArrayList<Map<String,Object>>();
36         for(int i = 0 ; i < listTitle.length; i++){
37             Map<String,Object> listItem =
38                     new HashMap<String, Object>();
39             listItem.put("image",R.drawable.ic_launcher);
40             listItem.put("title", listTitle[i]);
41             listItem.put("content", listContent[i]);
42             listItems.add(listItem);
43         }
44     }
45     @Override
46     protected void onCreate(Bundle savedInstanceState) {
47         super.onCreate(savedInstanceState);
48         setContentView(R.layout.activity_main);
49
50         getData();
51         listView = (ListView)findViewById(R.id.listView);
52         //构建Adapter
53         //第一个参数:context,即与适配器的View运行的Context
54         //第二个参数:data
55         //第三个参数:resource,为listView项定义视图的布局id
56         //第四个参数:from
57         //第五个参数:to,要显示到的View的id
58         adapter = new SimpleAdapter(this,
59                 listItems ,
60                 R.layout.listview_item,
61                 new String[] {"image","title","content"},
62                 new int[] {R.id.list_image,R.id.item_title,R.id.item_content});
63         //添加adapter到listView并显示
64         listView.setAdapter(adapter);
65
66         //为listView项添加响应监听事件
67         listView.setOnItemClickListener(new OnItemClickListener() {
68
69             @Override
70             public void onItemClick(AdapterView<?> parent, View view,
71                     int position, long id) {
72                 Toast.makeText(MainActivity.this,
73                             "你点击的是标题为"+listTitle[position],
74                             Toast.LENGTH_LONG).show();
75             }
76         });
77
78     }
79 }

MainActivity界面布局文件

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical">
 6
 7     <ListView
 8         android:id="@+id/listView"
 9         android:layout_width="match_parent"
10         android:layout_height="wrap_content"
11         >
12     </ListView>
13 </LinearLayout>

ListView项布局文件

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:id="@+id/ListViewItem"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     android:orientation="horizontal" >
 7
 8     <ImageView
 9         android:id="@+id/list_image"
10         android:layout_width="50dp"
11         android:layout_height="50dp"
12         android:src="@drawable/ic_launcher"
13         />
14      <LinearLayout
15         android:id="@+id/list_content"
16         android:layout_width="fill_parent"
17         android:layout_height="50dp"
18         android:orientation="vertical"
19          >
20         <TextView
21             android:id="@+id/item_title"
22             android:layout_width="match_parent"
23             android:layout_height="0dp"
24             android:layout_weight="1"
25             />
26          <TextView
27             android:id="@+id/item_content"
28             android:layout_width="match_parent"
29             android:layout_height="0dp"
30             android:layout_weight="1"
31             android:textSize="10sp"
32             android:textColor="@android:color/darker_gray"
33              />
34      </LinearLayout>
35 </LinearLayout>

  Demo运行效果:

        

时间: 2024-08-18 13:36:56

Android学习之——ListView的相关文章

[Android学习笔记]ListView中含有Button导致无法响应onItemClick回调的解决办法

转自:http://www.cnblogs.com/eyu8874521/archive/2012/10/17/2727882.html 问题描述: 当ListView的Item中的控件只是一些展示类控件时(比如TextView),注册ListView的监听setOnItemClickListener之后,当点击Item时候会触发onItemClick回调. 但是,当Item中存在Button(继承于Button)的控件时,onItemClick回调不会被触发. 解决方案: 在Item的布局文件

Android学习之listview的下拉刷新、上拉载入

本例是在上例的基础上完成的.本例实现的listview上拉载入.下拉刷新功能,是在开源网站上别人写好的listview,主要是对listview的控件进行重写,添加了footer和header. 1.listview_footer listview_footer是listview的底部. 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http

android学习之ListView如何使用

                                  2014-08-31 标签:数据源 listview android 移动开发 ListActivity ListView是Android一系列组件之一,它以垂直列表的方式列出所需的列表项.实现方式有两种:  * 第一种:使用ListView组件  * 第二种:当前的Activity继承ListActivity ListView是需要绑定数据源的----->ArrayAdapter.SimpleAdapter.SimpleCur

Android学习笔记ListView

在手机实际应用中,我们常常需要列表来显示我们的信息,比如我们的联系人列表,短信信息列表等.在Android中通过ListView来实现. ListView 的XML属性 属性名称 描述 android:choiceMode 规定此ListView所使用的选择模式.缺省状态下,list没有选择模式.属性值必须设置为下列常量之一: none,值为0,表示无选择模式: singlechoice,值为1,表示最多可以有一项被选中: multichoice,值为2,表示可以多项被选中. android:d

Android学习笔记——ListView

该工程的功能是实现在一个activity中显示一个表格 以下代码是MainActivity.java中的代码 package com.example.listview; import java.util.ArrayList; import java.util.HashMap; import android.app.ListActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuIt

Android学习—解决ListView部分内容被Tabhost遮盖问题

问题:tabhost固定在底部,某个tab中存在Listview,运行起来后发现如果listview中的列表内容比较多(超过一屏时),就会出现部分内容被tabhost遮盖了. 原Listview布局文件 <ListView         android:id="@+id/listBudgetSet"         android:layout_width="match_parent"         android:layout_height="

Android学习之——ListView下拉刷新

背景知识 ListView使用非常广泛,对于使用ListView的应用来说,下拉刷新是必不可少要实现的功能. 我们常用的微博.网易新闻,搜狐新闻都使用了这一功能,如下图所示.     微博 搜狐新闻 具体学习: 首先分析下拉刷新的具体操作过程: 用户手指在ListView上按下并往下拉----->出现一个提示的View在ListView顶部----->ListView内容更新,顶部的提示View消失    具体实现步骤:    1.创建继承自ListView的RefreshListView,并

Android学习系列(17)--App列表之圆角ListView(续)

http://www.cnblogs.com/qianxudetianxia/archive/2011/09/19/2068760.html 本来这篇文章想并到上篇Android学习系列(16)--App列表之圆角ListView中的,但是若是如此就让大家错过一篇新的好的文章,着实可惜.上篇中我们使用shape,corners,gradient实现了一个渐变的圆角效果,但是在完文之后的实践中,我发现有时效果不甚满意,选中和放手的事件监听没有去正确的判断,然后渐变效果也比较单一,性能也觉得不是很快

Android学习---ListView的点击事件,simpleAdapter和arrayadapter的原理和使用 - Hi_Amos

如题,本文将介绍 listview的点击事件,simpleAdapter和arrayadapter的原理和使用. 1.ListView的注册点击事件 //注册点击事件 personListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { /** * * @param parent 当前ListView * @param view 代表当前被点击的条目 * @param position 当前条目的位置 * @p