Android的ListView控件学习历程

本文记录了一位初学者在实现Android应用中ListView组件的学习过程。通过创建一个ListView显示姓名、性别和年龄,并实现点击显示选择信息的功能,作者遇到了布局文件使用、Adapter参数设置等问题。最终成功解决并分享了关键代码和经验教训,强调了理解函数参数的重要性。
摘要由CSDN通过智能技术生成

Android的ListView控件学习改错历程

学校实验让实现:在程序界面建立一个ListView组件,组件分四行,每行三项,分别显示“赵林 男 20;钱杰 男 24;孙红 女 22;李成 男 29”,点击ListView组件某一行,在Toast组件中显示“你选择了XX”。这样的一个程序。也遇到了不少问题。

引言: ListView就相当于一个二维数组,可以通过创建一个一维数组再添加到ListView中即可实现。ListView的每一行就代表题目中要填写的每一个对象。

文件创建方面
一错误工程目录
一开始以为对应ListView中有几个行就要去创建几个对应行的xml文件,后来知道其实只需创建一个表示行格式的xml文件就可以,如下图:
正确工程目录
控件添加方面
main.xml中只需加入ListView控件即可,list_item.xml文件中添加要创建的ListView每一行的格式,本例就直接把三个textview控件拖拽过去了。
list_item.xml界面内容

编程方面
一开始不太懂SimpleAdapter mSimpleAdapter=new SimpleAdapter(this,listItem,R.layout.list_item,new String[]{“name”,“sex”,“age”},new int[]{R.id.textView1,R.id.textView2,R.id.textView3});
写成了:

  SimpleAdapter mSimpleAdapter=new SimpleAdapter(this,listItem,R.layout.main,new String[]{"textView_1","textView_2","textView_3"},new int[]{R.id.textView1,R.id.textView2,R.id.textView3,R.id.textView3});
    lv.setAdapter(mSimpleAdapter);  

也就导致后来ListView界面显示的时候什么也没有
其实这里第三个参数应该表示的是接收listItem(第二个参数)类型的界面布局,也就是题目要求的每一行的格式,即创建的list_item.xml文件而不是以为的main.xml文件。

ps:
第一个参数this指上下文
第二个参数listItem(名字自定):基于Map的list。listItem二维数组里边的每一项都和ListView里边的每一项对应。listItem里边的每一项都是一个Map类型,这个Map类里边包含了ListView每一行需要的数据。其实就是用来存储所有数据的二维数组,只不过是map类型的变量组成的。
第四个参数:String数组,数组的里面的每一项要与第二个参数中存入map集合的的key值一一对应。
第五个参数:int数组,数组的里面的每一项要与第二个参数中存入map集合的的values值一一对应。其实存的是list_item.xml文件里面对应的ID。

更改后如下:

		HashMap<String,Object> map=new HashMap<String,Object>();
        map.put("name", "赵林");
        map.put("sex", "男");
        map.put("age", "20");
        listItem.add(map);
        HashMap<String,Object> map1=new HashMap<String,Object>();
        map1.put("name", "钱杰");
        map1.put("sex", "男");
        map1.put("age", "24");
        listItem.add(map1);
        HashMap<String,Object> map2=new HashMap<String,Object>();
        map2.put("name", "孙红");
        map2.put("sex", "女");
        map2.put("age", "22");
        listItem.add(map2);
        HashMap<String,Object> map3=new HashMap<String,Object>();
        map3.put("name", "李成");
        map3.put("sex", "男");
        map3.put("age", "29");
        listItem.add(map3);
        //这里是R.layout.list_item不是main
        SimpleAdapter mSimpleAdapter=new SimpleAdapter(this,listItem,R.layout.list_item,new String[]{"name","sex","age"},new int[]{R.id.textView1,R.id.textView2,R.id.textView3});
        lv.setAdapter(mSimpleAdapter);

最后实现
成功
初级选手表示这次写代码又耗费了大量时间,对于调用的函数一定要看好参数再行事,你以为的对于计算机来说不可能变成你以为的,希望以后的bug对我宽容点~~。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值