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

 

相关文章
|
9月前
|
XML 缓存 Android开发
Android开发,使用kotlin学习多媒体功能(详细)
Android开发,使用kotlin学习多媒体功能(详细)
172 0
|
9月前
|
API Android开发 开发者
Android UI设计: 什么是RecyclerView?为什么它比ListView更好?
Android UI设计: 什么是RecyclerView?为什么它比ListView更好?
114 2
|
5月前
|
Java Maven 开发工具
第一个安卓项目 | 中国象棋demo学习
本文是作者关于其第一个安卓项目——中国象棋demo的学习记录,展示了demo的运行结果、爬坑记录以及参考资料,包括解决Android Studio和maven相关问题的方法。
第一个安卓项目 | 中国象棋demo学习
|
9月前
|
监控 Unix 应用服务中间件
Android-音视频学习系列-(八)基于-Nginx-搭建(rtmp、http)直播服务器
Android-音视频学习系列-(八)基于-Nginx-搭建(rtmp、http)直播服务器
|
4月前
|
Web App开发 编解码 视频直播
视频直播技术干货(十二):从入门到放弃,快速学习Android端直播技术
本文详细介绍了Android端直播技术的全貌,涵盖了从实时音视频采集、编码、传输到解码与播放的各个环节。文章还探讨了直播中音视频同步、编解码器选择、传输协议以及直播延迟优化等关键问题。希望本文能为你提供有关Andriod端直播技术的深入理解和实践指导。
84 0
|
5月前
|
Android开发
Android学习 —— 测试init.rc中的条件触发的处理顺序
Android学习 —— 测试init.rc中的条件触发的处理顺序
|
6月前
|
搜索推荐 Android开发
学习AOSP安卓系统源代码,需要什么样的电脑?不同配置的电脑,其编译时间有多大差距?
本文分享了不同价位电脑配置对于编译AOSP安卓系统源代码的影响,提供了从6000元到更高价位的电脑配置实例,并比较了它们的编译时间,以供学习AOSP源代码时电脑配置选择的参考。
370 0
学习AOSP安卓系统源代码,需要什么样的电脑?不同配置的电脑,其编译时间有多大差距?
|
8月前
|
API Android开发 开发者
`RecyclerView`是Android API 21引入的UI组件,用于替代ListView和GridView
【6月更文挑战第26天】`RecyclerView`是Android API 21引入的UI组件,用于替代ListView和GridView。它提供高效的数据视图复用,优化的布局管理,支持多种布局(如线性、网格),并解耦数据、适配器和视图。RecyclerView的灵活性、性能(如局部刷新和动画支持)和扩展性使其成为现代Android开发的首选,特别是在处理大规模数据集时。
95 2
|
8月前
|
前端开发 API Android开发
25. 【Android教程】列表控件 ListView
25. 【Android教程】列表控件 ListView
278 2
|
9月前
|
存储 定位技术 开发工具
Android 开发前的设计,Android之内存泄漏调试学习与总结
Android 开发前的设计,Android之内存泄漏调试学习与总结

热门文章

最新文章

  • 1
    如何修复 Android 和 Windows 不支持视频编解码器的问题?
  • 2
    【03】优雅草央千澈详解关于APP签名以及分发-上架完整流程-第三篇安卓APP上架华为商店后面的步骤-华为应用商店相对比较麻烦一些-华为商店安卓上架
  • 3
    【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
  • 4
    Android经典面试题之Kotlin中Lambda表达式和匿名函数的区别
  • 5
    【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
  • 6
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 7
    【iOS-cocos2d-X 游戏开发之十三】cocos2dx通过Jni调用Android的Java层代码(上)
  • 8
    Android数据库开发——SQLite
  • 9
    Android Studio安装使用图文教程
  • 10
    站在巨人的肩膀上---重新自定义 android- ExpandableListView 收缩类,实现列表的可收缩扩展