baidu_19694879
baidu_19694879
采纳率50%
2016-03-29 07:25

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

10

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 5年前

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

    点赞 评论 复制链接分享
  • chen00yin 孤单的陈银 5年前

    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 5年前

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

    点赞 评论 复制链接分享
  • skyunicorn 小麟 5年前

    用setItemOnClickListener试试

    点赞 评论 复制链接分享

为你推荐