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运行效果:

         

原文地址:http://www.cnblogs.com/JohnTsai/p/4149173.html

 

时间: 2024-10-29 03:40:00

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

Android学习之——ListView下拉刷新

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

Android研究院之ListView原理学习与优化总结

转载自雨松MOMO程序研究院本文链接地址:Android研究院之ListView原理学习与优化总结(二十一) 列表的显示需要三个元素: ListVeiw: 用来展示列表的View. 适配器 : 用来把数据映射到ListView上 数据: 具体的将被映射的字符串,图片,或者基本组件. 根据列表的适配器类型,列表分为三种,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter,这三种适配器的使用大家可学习下官网上面的使用或者自行百度谷歌,一堆DEMO!!!其中以

Android学习自定义View(四)——继承控件(滑动时ListView的Item出现删除按钮)

MainActivity如下: package cc.testviewstudy4; import java.util.ArrayList; import java.util.HashMap; import cc.testviewstudy4.ListViewSubClass.OnDeleteListener; import android.os.Bundle; import android.widget.SimpleAdapter; import android.app.Activity; /

Android学习路上会遇到的各种瓶颈总结

本文讲的是Android学习路上会遇到的各种瓶颈总结,对于大多数大三学生来说,这个暑假是人生最后一个暑假.对于IT专业的学生来说,开学后就要面对各大IT企业的秋招,很多人会成为从0开始的Android实习生.在Android初学之路上,每个Android实习生都会遇到各式各样的瓶颈. 克服瓶颈要从克服自己对一切瓶颈的偏见做起,把逃避瓶颈的行为变成享受瓶颈带来的乐趣的过程.要知道喜力比国产啤酒贵好多的一条重要原因就在于喜力的瓶颈:你现在去买一瓶玻璃瓶装喜力,用手握住瓶颈,大拇指按住那颗星,然后用你

Android学习路线总结,绝对干货

title: Android学习路线总结,绝对干货 tags: Android学习路线,Android学习资料,怎么学习android grammar_cjkRuby: true --- 一.前言 不知不觉自己已经做了几年开发了,由记得刚出来工作的时候感觉自己能牛逼,现在回想起来感觉好无知.懂的越多的时候你才会发现懂的越少. 如果你的知识是一个圆,当你的圆越大时,圆外面的世界也就越大. 最近看到很多Android新手问Android学习路线,学习方法啊,如何入门啊,所以我从网上找了一些资料,然后

Android checkbox的listView具体操作方法_Android

本文主要实现在自定义的ListView布局中加入CheckBox控件,通过判断用户是否选中CheckBox来对ListView的选中项进行相应的操作.通过一个Demo来展示该功能,选中ListView中的某一项,然后点击Button按钮来显示选中了哪些项.1.程序结构图如下: 其中Person.java是实体类,MainActivity.java是Activity组件类.listitem.xml是自定义的列表每项布局文件.2.listitem.xml布局文件源码如下: <?xml version

一篇文章看懂Android学习最佳路线

前言 看到一篇文章中提到"最近几年国内的初级Android程序员已经很多了,但是中高级的Android技术人才仍然稀缺",这的确不假,从我在百度所进行的一些面试来看,找一个适合的高级Android工程师的确不容易,一般需要进行大量的面试才能挑选出一个比较满意的.为什么中高级Android程序员不多呢?这是一个问题,我不好回答,但是我想写一篇文章来描述下Android的学习路线,期望可以帮助更多的Android程序员提升自己.由于我也是从一个菜鸟过来的,所以我会结合我的个人经历以及我对A

Android学习路线指南

看到这位大牛的博文,不禁得感概,我最近也遇到了很多问题,内心彷徨不堪,转载大牛这篇博文,是为了更好的勉励自己.原文地址在最后面. 前言 看到一篇文章中提到"最近几年国内的初级Android程序员已经很多了,但是中高级的Android技术人才仍然稀缺",这的确不假,从我在百度所进行的一些面试来看,找一个适合的高级Android工程师的确不容易,一般需要进行大量的面试才能挑选出一个比较满意的.为什么中高级Android程序员不多呢?这是一个问题,我不好回答,但是我想写一篇文章来描述下And

我的Android学习之旅(转)

  去年大概在七月份的时候误打误撞接触了一阵子Android,之后由于工作时间比较忙,无暇顾及,九月份的时候自己空闲的时间比较多,公司相对来说加班情况没以前严重.开启了个人的Android学习之旅,初衷是想将Android的博客做个索引文章的,不过想想还可以分享一些学习中的历程,算是对自己的Android学习 有个交代吧.由于在公司有工作,学习的时间通常就是周一到周五晚上的时间和周末时间,周一到周五晚上的时间不确定,因此牺牲了大量的周末时间来学习Android,有点像苦行僧,时间段持续了三个多月