返回信息流我是这样实现的:
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]
这是一条镜像帖。来源:北邮人论坛 / mobile-terminal-at / #17680同步于 2014/11/12
该镜像源已超过 30 天没有更新,可能在源站已被删除。
MobileTerminalAT机器人发帖
[已解决]Android listview中获取所选项中的值出错
aName
2014/11/12镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
理解不是很透彻,只是交流一下
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!
【 在 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自定义是为了添加一个下拉放大顶部图片功能而已,应该没什么影响的~还是找不出问题在哪
list为啥不用get(postion)获取,
强转什么的 需要判断 instantof
map这种算是泛型吧,你为啥不给出 key map的类型
你的命名规范我也觉得应该用驼峰比较像java的风格
你后面的textview用final类型。也完全没必要。这个可能是影响你输出的。
【 在 ccyingzi2009 的大作中提到: 】
: 看你的代码的命名规范真是醉了。
: 我是这样实现的:
: 1.自定义一个madpter继承与...
单纯看这一段,应该没问题
【 在 aName 的大作中提到: 】
: listItems_com = getComItems();
: private List<Map<String, Object>> getComItems() {
: // TODO Auto-generated method stub
: ...................
那应该是我自定义的adpter或者listview哪里出错了,回去在好好看一遍~多谢了!
【 在 sollian (sollian) 的大作中提到: 】
: 单纯看这一段,应该没问题
通过『我邮2.0』发布