2 baidu 19694879 baidu_19694879 于 2016.03.29 15:25 提问

android 点击动态添加view组成的listView的item时,显示出问题

android  listview中的item是动态添加的view, 点击item内的其中一个view时,显示的永远是页面上显示出来的的最后一个item的最后一个view中的值

List carLists = ci.getCarLists();
for (CarModle cm : carLists) {
typeSeries = cm.getTypeSeries();
typeName = cm.getTypeName();
LinearLayout layout = new LinearLayout(mActivity);
LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
layout.setLayoutParams(params);
layout.setOrientation(LinearLayout.HORIZONTAL);
layout.setPadding(50, 20, 20, 20);
TextView tv_typeSeries = new TextView(mActivity);
tv_typeSeries.setText(typeSeries);
TextView tv_typeName = new TextView(mActivity);
tv_typeName.setText(typeName);
tv_typeName.setLeft(20);
layout.addView(tv_typeSeries, params);
layout.addView(tv_typeName, params);
holder.layout_carInfo.addView(layout, params);
}

    holder.layout_carInfo.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(mActivity, typeSeries + typeName, Toast.LENGTH_SHORT).show();
        }
    });

4个回答

baidu_19694879
baidu_19694879   2016.04.19 17:09
已采纳

已解决,谢谢各位,,,,,

skyunicorn
skyunicorn   2016.03.29 15:31

用setItemOnClickListener试试

skyunicorn
skyunicorn 回复baidu_19694879: 可以把收缩状态关闭掉,显示都展开的
一年多之前 回复
skyunicorn
skyunicorn 回复baidu_19694879: 可以设置那个状态
一年多之前 回复
baidu_19694879
baidu_19694879 你说的那个expandaListView是可收缩的吧,可以设置他每一个都展开子项吗,目前还没有用到过这个控件
一年多之前 回复
baidu_19694879
baidu_19694879 我现在做的东西布局是这样的,外层是一个listView 然后listView的每一个Item中有包含了数量不等的view,item中的view是动态添加的,然后需要点击view中的具体的控件,进行操作,
一年多之前 回复
skyunicorn
skyunicorn 回复baidu_19694879: 你的意思是item中还有小项?点击是item中的小项?那为什么不用ExpandaListView?
一年多之前 回复
baidu_19694879
baidu_19694879 这不是个listVIew, 需求是要点item中的每一个小项,item内的内容是动态添加的
一年多之前 回复
baidu_19694879
baidu_19694879   2016.03.29 17:59

具体实现要求是这样的图片说明

chen00yin
chen00yin   2016.03.29 20:36

for (CarModle cm : carLists) {
typeSeries = cm.getTypeSeries();
typeName = cm.getTypeName();
......
holder.layout_carInfo.addView(layout, params);
}
你的for循环执行完后,typeSeries和typeName指向最后一个item的数据,在onclick事件中当然会显示最后一条数据的信息啦。
可以在for循环内部中添加layout的onclick事件,对给个item添加onclick监听不就行了嘛。

baidu_19694879
baidu_19694879 这种我想到了,也试过,不行的
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!