BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / mobile-terminal-at / #17680同步于 2014/11/12
该镜像源已超过 30 天没有更新,可能在源站已被删除。
MobileTerminalAT机器人发帖

[已解决]Android listview中获取所选项中的值出错

aName
2014/11/12镜像同步6 回复
我是这样实现的: 1.自定义一个madpter继承与BaseAdapter,用map把数据传到List>数组中,在madpter实例化的时候将list传到当中。最后将madpter传到自定义的liatview中。 2.自定义的listview设置监听事件如下: public OnItemClickListener listener_com = new OnItemClickListener() { @ Override public void onItemClick( AdapterView<?> parent,View view,int position,long id) { // TODO Auto-generated // method stub // 获得选中项的Map对象 // Map map=(Map)listView_com.getItemAtPosition(position); //这里老是报类型转换错误,为什么? //Integer title=(Integer) map.get(“class_num”); //我该用了别的方式 ListView lv = (ListView) parent; final TextView tv = (TextView) lv .findViewById(R.id.class_num_com);//listview中的item中的一个textview String S = (String) tv .getText(); Toast.makeText( getApplicationContext(), “position”+position+” , “+S, Toast.LENGTH_SHORT) .show(); } }; 现在问题来了: listview中的第一个item中的textview显示的是201,Toast出来的position是1,S是201; 第二个item中的textview显示的是202,Toast出来的position是2,S还是201; 第三个item中的textview显示的是203,Toast出来的position是3,S还是201。。。 为什么position是对的,但是获取到的textview中的值是错的呢???求解答[ema0]
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
sollian机器人#1 · 2014/11/12
理解不是很透彻,只是交流一下 1、Map map=(Map)listView_com.getItemAtPosition(position); 这里老是报类型转换错误,为什么? 亲测无误,应该是楼主的问题。可以多贴一些代码看看。 2、final TextView tv = (TextView) lv.findViewById(R.id.class_num_com);//listview中的item中的一个textview 这里tv是第一个可见的TextView,即lv.getChildAt(0).findViewById(R.id.class_num_com)所得到的TextView,注意,这个是第一个可见的TextView,而不是position为0的TextView!
aName机器人#2 · 2014/11/12
【 在 sollian 的大作中提到: 】 : 理解不是很透彻,只是交流一下 : 1、Map map=(Map)listView_com.getItemAtPosition(position); 这里老是报类型转换错误,为什么? : 亲测无误,应该是楼主的问题。可以多贴一些代码看看。 : ................... listItems_com = getComItems(); private List<Map<String, Object>> getComItems() { // TODO Auto-generated method stub List<Map<String, Object>> listItems_com= new ArrayList<Map<String, Object>>(); for (int i = 0; i < 10; i++) { Map<String, Object> map = new HashMap<String, Object>(); map.put("commet","XXX"); map.put("up_num", 998 + i); map.put("down_num", 123 + i); map.put("people_num", 998 + 123); map.put("class_num", 3201 + i); listItems_com.add(map); } return listItems_com; } adpter_com = new ComListAdpter_m(this, listItems_com); // ComListAdpter_m为自定义的继承于BaseAdapter的adpter listView_com.setAdapter(adpter_com); 大概过程就是这样,应该是没有错的呀~其中所用的adpter,listview都是自定义的,不过都是摘自github别人的代码,adapter就是为了将listItems_com的内容实例化到listview中的每一个item中,listview自定义是为了添加一个下拉放大顶部图片功能而已,应该没什么影响的~还是找不出问题在哪
ccyingzi2009机器人#3 · 2014/11/12
Mmt
ccyingzi2009机器人#4 · 2014/11/12
list为啥不用get(postion)获取, 强转什么的 需要判断 instantof map这种算是泛型吧,你为啥不给出 key map的类型 你的命名规范我也觉得应该用驼峰比较像java的风格 你后面的textview用final类型。也完全没必要。这个可能是影响你输出的。 【 在 ccyingzi2009 的大作中提到: 】 : 看你的代码的命名规范真是醉了。 : 我是这样实现的: : 1.自定义一个madpter继承与...
sollian机器人#5 · 2014/11/12
单纯看这一段,应该没问题 【 在 aName 的大作中提到: 】 : listItems_com = getComItems(); : private List<Map<String, Object>> getComItems() { : // TODO Auto-generated method stub : ...................
aName机器人#6 · 2014/11/13
那应该是我自定义的adpter或者listview哪里出错了,回去在好好看一遍~多谢了! 【 在 sollian (sollian) 的大作中提到: 】 : 单纯看这一段,应该没问题 通过『我邮2.0』发布