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: 可以把收缩状态关闭掉,显示都展开的
2 年多之前 回复
skyunicorn
skyunicorn 回复baidu_19694879: 可以设置那个状态
2 年多之前 回复
baidu_19694879
baidu_19694879 你说的那个expandaListView是可收缩的吧,可以设置他每一个都展开子项吗,目前还没有用到过这个控件
2 年多之前 回复
baidu_19694879
baidu_19694879 我现在做的东西布局是这样的,外层是一个listView 然后listView的每一个Item中有包含了数量不等的view,item中的view是动态添加的,然后需要点击view中的具体的控件,进行操作,
2 年多之前 回复
skyunicorn
skyunicorn 回复baidu_19694879: 你的意思是item中还有小项?点击是item中的小项?那为什么不用ExpandaListView?
2 年多之前 回复
baidu_19694879
baidu_19694879 这不是个listVIew, 需求是要点item中的每一个小项,item内的内容是动态添加的
2 年多之前 回复
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 这种我想到了,也试过,不行的
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
android Listview 动态添加view显示的时候view 显示的内容一样
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_xinxi); list=new ArrayList<Friendsmoban>(); ...
实现类似listView中动态添加Item的功能
实现类似listView中动态添加Item的功能功能描述每个Item中包含EditText,具体有多少个Item也不定,用户可以添加和删除,然后再保存用户输入的值。 本人愚钝,用listview无法实现 ,但后来发现其实也不需要,可能描述不准确,网上也没搜到相关的功能。搜索的关键词也很重要啊。实现其实挺简单,只是当时对android view 的方法不熟,其实就是在一个viewGroup中
android ListView item里动态增加多个LinearLayout的问题
先上图  这是项目的源码 http://download.csdn.net/detail/xu_song/5312262 有兴趣的话,可以尝试着去解决   我想实现的功能就是在listView 的item加入多个LinearLayout,但是也不知道多少个,这个值是根据setAdapter的一个ArrayList对象取出来的。 (比如列表第一个item加入一个,第二个item加入二
关于ListView中Item点击事件,动态改变Item中控件属性
ListView中的Item事件点击不了,怎么办?由于要设置ListView的Item点击事件来改变控件属性,设置的时候发现Item无法点击,原因之一是给Item中的控件添加了属性android:clickable=”true”使Item不响应点击事件了。解决办法去点android:clickable=”true”即可。 <LinearLayout android:id="@
Android中ListView动态添加、移除itemView
ListView是Android项目中经常用到的一个控件,
ListView后面动态追加加载更多按钮
1.引入:另一种思路实现ListView后面动态的追加FootView
ListView的item点击事件及item中子view的点击事件冲突处理方法和思路
如题,这种情况出现的情景是很常见的,要想它们互不冲突,我的处理思路如下: 1. 因为listview是一个viewgroup,在自定义的listview的item布局(layout_items.xml)中的根节点中添加下面一行就好了。 android:descendantFocusability=“blockDescents” 2.在item里的子view中添加属性如下。 and
Android动态创建ListView视图,动态增加和删除Item.
ListView不能动态增加和删除
安卓ListView的item中含有EditText,动态添加item时EditText值的保存
要时刻保存EditText的值,我们需要给EditText设置一个文字改变时的监听器(addTextChangedListener),当文字发生改变后,我们获取EditText的值并存于itemObject的某个属性中。这里千万要脚下留心,**在EditText调用setText之前,一定要把textChangedListener移除掉**,否则setText后又会多次调用监听器里面的方法,造成值的清空。
listView的item中点击显示隐藏部分时,listView的高度无变化,且最后的item被挤出屏幕
为了实现点击listView中item中的某个TextView,展示此item中隐藏的布局,再次点击隐藏此布局的这个功能,刚开始我在adapter的getView() 方法中加了给这个textView中加了一个点击事件。 textView.setOnClickListener(new View.OnClickListener() { @Override