HardBirch

Android入门第六篇之ListView (一)

时间:09-09-11 栏目:安卓入门与提高 作者:张飞不张,文采横飞 评论:65 点击: 16,166 次

 

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

1.准备ListView要显示的数据


2.使用

一维或多维

动态数组

保存数据;

2.构建适配器



简单地来说,

适配器就是

Item数组





动态数组



有多少元素就生成多少个Item;

3.把

适配器



添加到ListView,并显示出来。



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

1

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

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






<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:






















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

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

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

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

最后就是JAVA的源代码:





//生成动态数组,并且转载数据
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);
}

声明: 本文由( 张飞不张,文采横飞 )原创编译,转载请保留链接: Android入门第六篇之ListView (一)

Android入门第六篇之ListView (一):目前有65 条留言

  1. 谢谢!受益匪浅。

    2009-10-27 13:07 [回复]
  2. 0楼
    metababy:

    期待更多的Android开发教程

    2010-01-21 15:33 [回复]
  3. 你好强大![e01]

    2010-04-19 13:42 [回复]
  4. 0楼
    maoxuchu:

    3dip 说为3个像素貌似不太合理

    2010-08-22 23:08 [回复]
  5. 0楼
    yelwen000:

    [e01]

    2010-10-28 11:21 [回复]
  6. 0楼
    zaqmko1987:

    [e01]

    2010-10-29 13:07 [回复]
  7. 应该怎样分别取出ItemText和ItemTitle的值呢

    2010-10-31 18:45 [回复]
  8. 0楼
    hellogv:

    回复 lincoln1234:
    一般是把值保存为数组,然后作为object保存到动态数组内,根据选到的Item序号再来读取ItemText和ItemTitle的值

    2010-10-31 20:44 [回复]
  9. 回复 hellogv:我现在只会取出序号,但不知道应该取出对应的item中的两个值,请指教,谢谢

    2010-11-01 13:54 [回复]
  10. 0楼
    freemancy:

    [e10][e01]
    很好.收益了.

    2010-11-07 00:48 [回复]
  11. 0楼
    reeve520:

    需要import哪些东西啊???

    2010-12-02 19:26 [回复]
  12. 0楼
    xidiandj:

    回复 reeve520:eclipse 中 shift+ctrl+o 会把需要的import

    2010-12-08 15:03 [回复]
  13. 0楼
    naive_monk:

    为什么我在用2.2时提示了错误啊,我是复制粘贴的啊[e07]

    2011-01-10 23:00 [回复]
  14. 0楼
    HappyYohn:

    [e03]

    2011-01-13 11:41 [回复]
  15. 在my_listitem.xml中的LinearLayout的android:orientation=&quot;vertical&quot; 应该是”horizontal“博主写错了吧

    2011-01-14 09:07 [回复]
  16. [e10][e10][e10]
    [e10]我错了[e10]
    [e10][e10][e10]

    2011-01-14 10:48 [回复]
  17. [e01]很清晰

    2011-03-01 17:57 [回复]
  18. 0楼
    Y___Y:

    点击ListView项目中右边文本空白怎么不响应点击事件,怎么才能做到响应呢?

    2011-03-09 23:32 [回复]
  19. [e01]

    2011-03-10 20:14 [回复]
  20. 0楼
    ckjacket:

    @Y___Y

    android:layout_width = &quot;fill_parent&quot;

    2011-03-15 11:25 [回复]
  21. 0楼
    jianwei824:

    请教: 为什么我的 findViewById 返回的是空呢?

    2011-03-27 14:21 [回复]
  22. 0楼
    fangfangcs:

    [e03]十分感谢。努力学习中

    2011-04-27 11:33 [回复]
  23. [e01][e03]

    2011-05-03 16:52 [回复]
  24. 0楼
    maryr:

    [e01][e03]

    2011-05-13 14:50 [回复]
  25. [e10]

    2011-05-31 11:06 [回复]
  26. 希望继续更新新内容!!!

    2011-07-05 16:37 [回复]
  27. 0楼
    sfshine:

    好犀利的內容!不會對不起你!

    2011-07-23 17:49 [回复]
  28. 0楼
    ZZZ123098:

    如果我控制ListView 只显示6个item ,继续添加的话,添加到最后一项。同时删除最前的那一项,如何实现呢?

    2011-07-25 09:41 [回复]
  29. 不错,学习。

    2011-07-25 13:40 [回复]
  30. 0楼
    mtc1256:

    good…

    2011-07-27 16:33 [回复]
  31. 0楼
    yjy951753:

    [reply]jianwei824[/reply]
    我也发现了这个问题,你解决了么

    2011-08-03 11:24 [回复]
  32. 0楼
    yjy951753:

    [reply]jianwei824[/reply]
    解决了。。。是估计你的ID写错了,系统通过ID每找到Listview的对象,所以就返回了空指针

    2011-08-03 11:36 [回复]
  33. 这是一个很好的博客网站,小弟受益匪浅呀,学习Android就靠它了!以后经常来!!!!

    2011-08-10 16:04 [回复]
  34. 这是一个很好的博客网站,小弟受益匪浅呀,学习Android就靠它了!以后经常来!!!!

    2011-08-10 16:04 [回复]
  35. 0楼
    Marylo:

    支持~~

    2011-08-23 13:50 [回复]
  36. 0楼
    dushijia:

    这是一个很好的博客网站,小弟受益匪浅呀,学习Android就靠它了!以后经常来!!!!

    2011-08-26 18:07 [回复]
  37. 0楼
    hellogv:

    [reply]lincoln1234[/reply]
    这个。。。多练习BaseAdapter,在里面加入列表保存必须的一些数据。。。。BaseAdapter是GridView和ListView的关键中的关键!

    2011-08-27 11:03 [回复]
  38. 0楼
    walq1986:

    受益匪浅
    感谢博主

    2011-08-31 15:45 [回复]
  39. 0楼
    manymore13:

    我总算是看明白了点……至于你信不信,反正我是信了….

    2011-09-01 22:48 [回复]
  40. 灰常犀利,懂了点了

    2011-09-01 23:08 [回复]
  41. 问一下楼主,用ItemClickListenner监听的时候,如果用switch语句,那条件语句key中直接添加position行不行?

    2011-09-02 17:49 [回复]
  42. 0楼
    hellogv:

    [reply]marenjun0611[/reply]
    这个试试就知道了,我很少用switch

    2011-09-04 13:55 [回复]
  43. 0楼
    forevervar:

    java程序中的类是继承的Activity还是ListActivity,有什么不同吗?继承ListActivity的话貌似程序一直报错!

    2011-09-20 08:40 [回复]
  44. 0楼
    hzfuji001:

    dip 是不是 不能叫做 像素?

    2011-09-22 12:00 [回复]
  45. 0楼
    joelost:

    楼主V5

    2011-09-28 15:45 [回复]
  46. 0楼
    mozei:

    如果只用XML的话,怎么把main.xml和my_listitem.xml关联起来?

    2011-10-06 20:52 [回复]
  47. 0楼
    hellogv:

    [reply]mozei[/reply]
    什么意思?没看懂。。。

    2011-10-07 22:24 [回复]
  48. 0楼
    fmcwc:

    谢谢楼主的分享。
    不知道楼主有没有研究过在两个listview之间拖拽item,或者有这方面的资料。

    2011-11-04 14:59 [回复]
  49. 0楼
    hellogv:

    [reply]fmcwc[/reply]
    可以做得到的,只是有点复杂,需要在ListView监听onTouch和全局监听dispatch touch events

    2011-11-04 23:15 [回复]
  50. 0楼
    fansmi:

    可以在java文件中修改 my_listitem.xml 里面TextView 文字大小吗

    2011-11-07 18:06 [回复]
  51. 0楼
    hellogv:

    [reply]fansmi[/reply]
    可以的,使用setLayoutParams()

    2011-11-07 22:59 [回复]
  52. 0楼
    hurry70:

    Good share!

    2011-11-14 14:24 [回复]
  53. 我用ArrayAdapter操作没有问题,但是换成simpleadapter一直报错

    2011-11-26 15:15 [回复]
  54. 0楼
    f330656066:

    谢谢!受益匪浅。

    2011-12-02 11:47 [回复]
  55. 0楼
    lauphai:

    你的代码什么的,干净利落,很好的习惯啊,向你学习了。。。。

    2011-12-20 00:03 [回复]
  56. 0楼
    lu_listen:

    学习了,顶一下!

    2012-03-01 16:35 [回复]
  57. 0楼
    Mary881225:

    谢谢!受益匪浅。我正在全面研究ListView,这个算是入门吧。

    2012-03-11 13:12 [回复]
  58. 0楼
    sunsh1989:

    犹如宋江及时雨,灰常适合,感谢LZ!

    2012-04-11 15:55 [回复]
  59. [reply]naive_monk[/reply]
    把下面这两句注释
    ListView list = (ListView) findViewById(R.id.MyListView);
    list.setAdapter(mSchedule);
    改为 setListAdapter(mSchedule);就可以了,不知道为什么

    2012-05-22 11:03 [回复]
  60. 谢谢了。经常关注,学习了哦。

    2012-06-29 11:39 [回复]
  61. 0楼
    vekaco:

    楼主厉害

    2012-07-03 11:05 [回复]
  62. 经典分析啊

    2012-07-04 15:35 [回复]
  63. 先谢谢啦!

    2012-08-23 15:57 [回复]
  64. 你好!我想问一下,怎么实现点击ListView里面的内容进入到另一个Activity里面。谢谢了!!!

    2012-08-27 09:27 [回复]
  65. 0楼
    YNCJDX_ZHQ:

    运行结果中,每个item后面的省略号代表什么?

    2012-10-04 11:18 [回复]

发表评论


QQ群互动

Linux系统与内核学习群:194051772

WP建站技术学习交流群:194062106

魔豆之路QR

魔豆的Linux内核之路

魔豆的Linux内核之路

优秀工程师当看优秀书籍

优秀程序员,要看优秀书!

赞助商广告

友荐云推荐