jeans chen
we've got them by the balls

Android入门第六篇之ListView (一)

分类: Android入门 111825人阅读 评论(70) 收藏 举报

本文来自http://blog.csdn.net/hellogv/

 

ListView是一个经常用到的控件,ListView里面的每个子项Item可以使一个字符串,也可以是一个组合控件。先说说ListView的实现:

1.准备ListView要显示的数据

2.使用 一维或多维 动态数组 保存数据;

2.构建适配器 简单地来说, 适配器就是 Item数组 动态数组 有多少元素就生成多少个Item;

3.把 适配器 添加到ListView,并显示出来。


接下来,看看本文代码所实现的ListView:

1

 

接下来,就开始UI的XML代码:

main.xml代码如下,很简单,也不需要多做解释了:

 

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout   
  3.         android:id="@+id/LinearLayout01"   
  4.         android:layout_width="fill_parent"   
  5.         android:layout_height="fill_parent"   
  6.         xmlns:android="http://schemas.android.com/apk/res/android">  
  7.           
  8.         <ListView android:layout_width="wrap_content"   
  9.                   android:layout_height="wrap_content"   
  10.                   android:id="@+id/MyListView">  
  11.         </ListView>  
  12. </LinearLayout>  

 

my_listitem.xml的代码如下,my_listitem.xml用于设计ListView的Item:

 

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout   
  3.         android:layout_width="fill_parent"   
  4.         xmlns:android="http://schemas.android.com/apk/res/android"   
  5.         android:orientation="vertical"  
  6.         android:layout_height="wrap_content"   
  7.         android:id="@+id/MyListItem"   
  8.         android:paddingBottom="3dip"   
  9.         android:paddingLeft="10dip">  
  10.         <TextView   
  11.                 android:layout_height="wrap_content"   
  12.                 android:layout_width="fill_parent"   
  13.                 android:id="@+id/ItemTitle"   
  14.                 android:textSize="30dip">  
  15.         </TextView>  
  16.         <TextView   
  17.                 android:layout_height="wrap_content"   
  18.                 android:layout_width="fill_parent"   
  19.                 android:id="@+id/ItemText">  
  20.         </TextView>  
  21. </LinearLayout>  

解释一下,里面用到的一些属性:

1.paddingBottom="3dip",Layout往底部留出3个像素的空白区域

2.paddingLeft="10dip",Layout往左边留出10个像素的空白区域

3.textSize="30dip",TextView的字体为30个像素那么大。

 

最后就是JAVA的源代码:

 

  1. public void onCreate(Bundle savedInstanceState) {  
  2.     super.onCreate(savedInstanceState);  
  3.     setContentView(R.layout.main);  
  4.     //绑定XML中的ListView,作为Item的容器  
  5.     ListView list = (ListView) findViewById(R.id.MyListView);  
  6.       
  7.     //生成动态数组,并且转载数据  
  8.     ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();  
  9.     for(int i=0;i<30;i++)  
  10.     {  
  11.         HashMap<String, String> map = new HashMap<String, String>();  
  12.         map.put("ItemTitle""This is Title.....");  
  13.         map.put("ItemText""This is text.....");  
  14.         mylist.add(map);  
  15.     }  
  16.     //生成适配器,数组===》ListItem  
  17.     SimpleAdapter mSchedule = new SimpleAdapter(this//没什么解释  
  18.                                                 mylist,//数据来源   
  19.                                                 R.layout.my_listitem,//ListItem的XML实现  
  20.                                                   
  21.                                                 //动态数组与ListItem对应的子项          
  22.                                                 new String[] {"ItemTitle""ItemText"},   
  23.                                                   
  24.                                                 //ListItem的XML文件里面的两个TextView ID  
  25.                                                 new int[] {R.id.ItemTitle,R.id.ItemText});  
  26.     //添加并且显示  
  27.     list.setAdapter(mSchedule);  
  28. }  

 
查看评论
59楼 lazycatsx 2013-05-21 08:23发表 [回复]
学习了,多谢分享
58楼 miaoran2014 2013-05-15 14:40发表 [回复]
很好,讲的很到位
57楼 lansehaiyang007 2013-04-28 11:56发表 [回复]
温习了知识,不错
56楼 kapaseker 2013-04-21 11:29发表 [回复]
据说看了帖子不回的···没有xiaoJJ
55楼 myjie0527 2012-11-04 14:43发表 [回复]
学习了,示例很棒!
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发表 [回复]
经典分析啊
50楼 vekaco 2012-07-03 11:05发表 [回复]
楼主厉害
49楼 smallnickey 2012-06-29 11:39发表 [回复]
谢谢了。经常关注,学习了哦。
48楼 sunsh1989 2012-04-11 15:55发表 [回复]
犹如宋江及时雨,灰常适合,感谢LZ!
47楼 Mary881225 2012-03-11 13:12发表 [回复]
谢谢!受益匪浅。我正在全面研究ListView,这个算是入门吧。
46楼 lu_listen 2012-03-01 16:35发表 [回复]
学习了,顶一下!
45楼 lauphai 2011-12-20 00:03发表 [回复]
你的代码什么的,干净利落,很好的习惯啊,向你学习了。。。。
44楼 f330656066 2011-12-02 11:47发表 [回复]
谢谢!受益匪浅。
43楼 gaoyongqing 2011-11-26 15:15发表 [回复]
我用ArrayAdapter操作没有问题,但是换成simpleadapter一直报错
42楼 hurry70 2011-11-14 14:24发表 [回复]
Good share!
41楼 fansmi 2011-11-07 18:06发表 [回复]
可以在java文件中修改 my_listitem.xml 里面TextView 文字大小吗
Re: hellogv 2011-11-07 22:59发表 [回复]
回复fansmi:可以的,使用setLayoutParams()
40楼 fmcwc 2011-11-04 14:59发表 [回复]
谢谢楼主的分享。
不知道楼主有没有研究过在两个listview之间拖拽item,或者有这方面的资料。
Re: hellogv 2011-11-04 23:15发表 [回复]
回复fmcwc:可以做得到的,只是有点复杂,需要在ListView监听onTouch和全局监听dispatch touch events
39楼 mozei 2011-10-06 20:52发表 [回复]
如果只用XML的话,怎么把main.xml和my_listitem.xml关联起来?
Re: hellogv 2011-10-07 22:24发表 [回复]
回复mozei:什么意思?没看懂。。。
38楼 joelost 2011-09-28 15:45发表 [回复]
楼主V5
37楼 hzfuji001 2011-09-22 12:00发表 [回复]
dip 是不是 不能叫做 像素?
36楼 forevervar 2011-09-20 08:40发表 [回复]
java程序中的类是继承的Activity还是ListActivity,有什么不同吗?继承ListActivity的话貌似程序一直报错!
35楼 marenjun0611 2011-09-02 17:49发表 [回复]
问一下楼主,用ItemClickListenner监听的时候,如果用switch语句,那条件语句key中直接添加position行不行?
Re: hellogv 2011-09-04 13:55发表 [回复]
回复marenjun0611:这个试试就知道了,我很少用switch
34楼 wangliangfei 2011-09-01 23:08发表 [回复]
灰常犀利,懂了点了
33楼 manymore13 2011-09-01 22:48发表 [回复]
我总算是看明白了点......至于你信不信,反正我是信了....
32楼 walq1986 2011-08-31 15:45发表 [回复]
受益匪浅
感谢博主
31楼 dushijia 2011-08-26 18:07发表 [回复]
这是一个很好的博客网站,小弟受益匪浅呀,学习Android就靠它了!以后经常来!!!!
30楼 Marylo 2011-08-23 13:50发表 [回复]
支持~~
29楼 libin131420 2011-08-10 16:04发表 [回复]
这是一个很好的博客网站,小弟受益匪浅呀,学习Android就靠它了!以后经常来!!!!
28楼 libin131420 2011-08-10 16:04发表 [回复]
这是一个很好的博客网站,小弟受益匪浅呀,学习Android就靠它了!以后经常来!!!!
27楼 mtc1256 2011-07-27 16:33发表 [回复]
good...
26楼 huangdacang 2011-07-25 13:40发表 [回复]
不错,学习。
25楼 ZZZ123098 2011-07-25 09:41发表 [回复]
如果我控制ListView 只显示6个item ,继续添加的话,添加到最后一项。同时删除最前的那一项,如何实现呢?
24楼 sfshine 2011-07-23 17:49发表 [回复]
好犀利的內容!不會對不起你!
23楼 zhuzhuaipps 2011-07-05 16:37发表 [回复]
希望继续更新新内容!!!
22楼 wangqilin8888 2011-05-31 11:06发表 [回复]
[e10]
21楼 maryr 2011-05-13 14:50发表 [回复]
[e01][e03]
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 返回的是空呢?
Re: yjy951753 2011-08-03 11:36发表 [回复]
回复jianwei824:解决了。。。是估计你的ID写错了,系统通过ID每找到Listview的对象,所以就返回了空指针
Re: yjy951753 2011-08-03 11:24发表 [回复]
回复jianwei824:我也发现了这个问题,你解决了么
17楼 ckjacket 2011-03-15 11:25发表 [回复]
@Y___Y

android:layout_width = &quot;fill_parent&quot;
16楼 bujixiansheng 2011-03-10 20:14发表 [回复]
[e01]
15楼 Y___Y 2011-03-09 23:32发表 [回复]
点击ListView项目中右边文本空白怎么不响应点击事件,怎么才能做到响应呢?
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=&quot;vertical&quot; 应该是”horizontal“博主写错了吧
11楼 HappyYohn 2011-01-13 11:41发表 [回复]
[e03]
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);就可以了,不知道为什么
9楼 reeve520 2010-12-02 19:26发表 [回复]
需要import哪些东西啊???
Re: xidiandj 2010-12-08 15:03发表 [回复]
回复 reeve520:eclipse 中 shift+ctrl+o 会把需要的import
8楼 freemancy 2010-11-07 00:48发表 [回复]
[e10][e01]
很好.收益了.
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]
5楼 yelwen000 2010-10-28 11:21发表 [回复]
[e01]
4楼 maoxuchu 2010-08-22 23:08发表 [回复]
3dip 说为3个像素貌似不太合理
3楼 匿名用户 2010-04-19 13:42发表 [回复]
你好强大![e01]
2楼 metababy 2010-01-21 15:33发表 [回复]
期待更多的Android开发教程
1楼 zhangfl_irene 2009-10-27 13:07发表 [回复]
谢谢!受益匪浅。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
个人资料
 
    • 访问:1868472次
    • 积分:12386分
    • 排名:第178名
    • 原创:127篇
    • 转载:15篇
    • 译文:0篇
    • 评论:3658条
我的微博
博客专栏
Android 天天向上

文章:29篇

阅读:790815
最新评论
文章存档
posted on 2013-06-04 15:51  jeans chen  阅读(264)  评论(0编辑  收藏  举报