baidu_19694879
2016-03-29 07:25
采纳率: 50%
浏览 2.8k

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 2016-04-19 09:09
    已采纳

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

    已采纳该答案
    打赏 评论
  • 小麟 2016-03-29 07:31

    用setItemOnClickListener试试

    打赏 评论
  • baidu_19694879 2016-03-29 09:59

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

    打赏 评论
  • 孤单的陈银 2016-03-29 12: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监听不就行了嘛。

    打赏 评论

相关推荐 更多相似问题