Android入门第六篇之ListView (一)
本文来自http://blog.csdn.net/hellogv/
ListView是一个经常用到的控件,ListView里面的每个子项Item可以使一个字符串,也可以是一个组合控件。先说说ListView的实现:
1.准备ListView要显示的数据 ;
2.使用 一维或多维 动态数组 保存数据;
2.构建适配器 , 简单地来说, 适配器就是 Item数组 , 动态数组 有多少元素就生成多少个Item;
3.把 适配器 添加到ListView,并显示出来。
接下来,看看本文代码所实现的ListView:
接下来,就开始UI的XML代码:
main.xml代码如下,很简单,也不需要多做解释了:
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout
- android:id="@+id/LinearLayout01"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- xmlns:android="http://schemas.android.com/apk/res/android">
- <ListView android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:id="@+id/MyListView">
- </ListView>
- </LinearLayout>
my_listitem.xml的代码如下,my_listitem.xml用于设计ListView的Item:
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout
- android:layout_width="fill_parent"
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_height="wrap_content"
- android:id="@+id/MyListItem"
- android:paddingBottom="3dip"
- android:paddingLeft="10dip">
- <TextView
- android:layout_height="wrap_content"
- android:layout_width="fill_parent"
- android:id="@+id/ItemTitle"
- android:textSize="30dip">
- </TextView>
- <TextView
- android:layout_height="wrap_content"
- android:layout_width="fill_parent"
- android:id="@+id/ItemText">
- </TextView>
- </LinearLayout>
解释一下,里面用到的一些属性:
1.paddingBottom="3dip",Layout往底部留出3个像素的空白区域
2.paddingLeft="10dip",Layout往左边留出10个像素的空白区域
3.textSize="30dip",TextView的字体为30个像素那么大。
最后就是JAVA的源代码:
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- //绑定XML中的ListView,作为Item的容器
- ListView list = (ListView) findViewById(R.id.MyListView);
- //生成动态数组,并且转载数据
- ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
- for(int i=0;i<30;i++)
- {
- HashMap<String, String> map = new HashMap<String, String>();
- map.put("ItemTitle", "This is Title.....");
- map.put("ItemText", "This is text.....");
- mylist.add(map);
- }
- //生成适配器,数组===》ListItem
- SimpleAdapter mSchedule = new SimpleAdapter(this, //没什么解释
- mylist,//数据来源
- R.layout.my_listitem,//ListItem的XML实现
- //动态数组与ListItem对应的子项
- new String[] {"ItemTitle", "ItemText"},
- //ListItem的XML文件里面的两个TextView ID
- new int[] {R.id.ItemTitle,R.id.ItemText});
- //添加并且显示
- list.setAdapter(mSchedule);
- }
- 58楼 miaoran2014 2013-05-15 14:40发表 [回复]
- 很好,讲的很到位
- 57楼 lansehaiyang007 2013-04-28 11:56发表 [回复]
- 温习了知识,不错
- 54楼 YNCJDX_ZHQ 2012-10-04 11:18发表 [回复]
- 运行结果中,每个item后面的省略号代表什么?
- 53楼 lspj201007186 2012-08-27 09:27发表 [回复]
- 你好!我想问一下,怎么实现点击ListView里面的内容进入到另一个Activity里面。谢谢了!!!
- Re: chenmeiling0 2012-11-13 15:00发表 [回复]
- 回复lspj201007186:intent 跳转
- 52楼 JennyJennifer 2012-08-23 15:57发表 [回复]
- 先谢谢啦!
- 51楼 guolong2008 2012-07-04 15:35发表 [回复]
- 经典分析啊
- 49楼 smallnickey 2012-06-29 11:39发表 [回复]
- 谢谢了。经常关注,学习了哦。
- 47楼 Mary881225 2012-03-11 13:12发表 [回复]
- 谢谢!受益匪浅。我正在全面研究ListView,这个算是入门吧。
- 44楼 f330656066 2011-12-02 11:47发表 [回复]
- 谢谢!受益匪浅。
- 43楼 gaoyongqing 2011-11-26 15:15发表 [回复]
- 我用ArrayAdapter操作没有问题,但是换成simpleadapter一直报错
- Re: hellogv 2011-11-04 23:15发表 [回复]
- 回复fmcwc:可以做得到的,只是有点复杂,需要在ListView监听onTouch和全局监听dispatch touch events
- 36楼 forevervar 2011-09-20 08:40发表 [回复]
- java程序中的类是继承的Activity还是ListActivity,有什么不同吗?继承ListActivity的话貌似程序一直报错!
- 35楼 marenjun0611 2011-09-02 17:49发表 [回复]
- 问一下楼主,用ItemClickListenner监听的时候,如果用switch语句,那条件语句key中直接添加position行不行?
- 34楼 wangliangfei 2011-09-01 23:08发表 [回复]
- 灰常犀利,懂了点了
- 33楼 manymore13 2011-09-01 22:48发表 [回复]
- 我总算是看明白了点......至于你信不信,反正我是信了....
- 29楼 libin131420 2011-08-10 16:04发表 [回复]
- 这是一个很好的博客网站,小弟受益匪浅呀,学习Android就靠它了!以后经常来!!!!
- 28楼 libin131420 2011-08-10 16:04发表 [回复]
- 这是一个很好的博客网站,小弟受益匪浅呀,学习Android就靠它了!以后经常来!!!!
- 26楼 huangdacang 2011-07-25 13:40发表 [回复]
- 不错,学习。
- 23楼 zhuzhuaipps 2011-07-05 16:37发表 [回复]
- 希望继续更新新内容!!!
- 22楼 wangqilin8888 2011-05-31 11:06发表 [回复]
- [e10]
- 20楼 yuxlong2010 2011-05-03 16:52发表 [回复]
- [e01][e03]
- 19楼 fangfangcs 2011-04-27 11:33发表 [回复]
- [e03]十分感谢。努力学习中
- 18楼 jianwei824 2011-03-27 14:21发表 [回复]
- 请教: 为什么我的 findViewById 返回的是空呢?
- 16楼 bujixiansheng 2011-03-10 20:14发表 [回复]
- [e01]
- 14楼 lovelove000000 2011-03-01 17:57发表 [回复]
- [e01]很清晰
- 13楼 woaiguandage 2011-01-14 10:48发表 [回复]
- [e10][e10][e10]
[e10]我错了[e10]
[e10][e10][e10]
- 12楼 woaiguandage 2011-01-14 09:07发表 [回复]
- 在my_listitem.xml中的LinearLayout的android:orientation="vertical" 应该是”horizontal“博主写错了吧
- 10楼 naive_monk 2011-01-10 23:00发表 [回复]
- 为什么我在用2.2时提示了错误啊,我是复制粘贴的啊[e07]
- Re: windowxp5354 2012-05-22 11:03发表 [回复]
- 回复naive_monk:把下面这两句注释
ListView list = (ListView) findViewById(R.id.MyListView);
list.setAdapter(mSchedule);
改为 setListAdapter(mSchedule);就可以了,不知道为什么
- 7楼 lincoln1234 2010-10-31 18:45发表 [回复]
- 应该怎样分别取出ItemText和ItemTitle的值呢
- Re: hellogv 2010-10-31 20:44发表 [回复]
- 回复 lincoln1234:
一般是把值保存为数组,然后作为object保存到动态数组内,根据选到的Item序号再来读取ItemText和ItemTitle的值
- Re: lincoln1234 2010-11-01 13:54发表 [回复]
- 回复 hellogv:我现在只会取出序号,但不知道应该取出对应的item中的两个值,请指教,谢谢
- Re: hellogv 2011-08-27 11:03发表 [回复]
- 回复lincoln1234:这个。。。多练习BaseAdapter,在里面加入列表保存必须的一些数据。。。。BaseAdapter是GridView和ListView的关键中的关键!
- 6楼 zaqmko1987 2010-10-29 13:07发表 [回复]
- [e01]
- 1楼 zhangfl_irene 2009-10-27 13:07发表 [回复]
- 谢谢!受益匪浅。
Android 天天向上
文章:29篇 阅读:790815 |
- Android入门(16)
- Android提高(21)
- Android番外(13)
- Android MediaPlayer(9)
- 计算机视觉(11)
- C++ Builder专栏(6)
- Delphi专栏(5)
- J2ME专栏(27)
- Lazarus专栏(5)
- Wince/WindowsMobile专栏(24)
- 加密解密专栏(2)
- 单片机专栏(8)
- 日志(15)
- Android入门第八篇之GridView(九宫图)(129646)
- Android入门第六篇之ListView (一)(111817)
- Android提高第二篇之SurfaceView的基本使用(80116)
- Android入门第一篇(58694)
- Android提高十八篇之自定义Menu(TabMenu)(55130)
- 在Android上使用ZXing识别条形码/二维码(46346)
- Android入门第十五篇之ActivityGroup + GridView 实现Tab分页标签(45180)
- Android入门第十六篇之Style与Theme(43726)
- Android入门第七篇之ListView (二)(41081)
- Android-opencv之CVCamera(40090)
-
Android入门第一篇
wxp873952354: 看总结的这么调理,都可以写本书了,楼主太厉害了,是我辈学习之榜样,谢谢楼主
-
Android提高第三篇之SurfaceView与多线程的混搭
manymore13: bitmap 不加同步锁?
-
Android提高第二十一篇之MediaPlayer播放网络视频
u010705513: 楼主在真机上怎么播放不了呢
-
Android提高第二十一篇之MediaPlayer播放网络视频
u010705513: 楼主这个程序在真机上怎么不运行呢 什么原因呢
-
Android提高第二十一篇之MediaPlayer播放网络视频
u010705513: 楼主可以再提供一个视屏播放的地址吗 Url
-
小玩OpenSURF图像识别
wellsoho: 博主测试验证过吗,识别率有多高?要识别精准,得改用配准算法吧?
-
Android提高第二篇之SurfaceView的基本使用
lijunhuayc: @chairzzz:Java的数值型,布尔型,允许不初始化,虚拟机会默认初始化为“0”态
-
Android入门第六篇之ListView (一)
lazycatsx: 学习了,多谢分享
-
Android提高第二十一篇之MediaPlayer播放网络视频
dalancon: 有源代码 案例吗 ???提供一份源码看看啊
-
Android-opencv之CVCamera
u010753667: android手机摄像头可不可用opencv捕获手势,怎么做?