int“ pos”未正确通过。
ImageViewOnClick()时,如何校正值。
似乎当listener激活信息时不再准确。

public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder vHolder;
    if (convertView != null)
        vHolder = (ViewHolder) convertView.getTag();
    else {
        convertView = mInflater.inflate(R.layout.car_list, null);
        vHolder = new ViewHolder();
        vHolder.textView = ((TextView) convertView.findViewById(R.id.tvCarListText));
        vHolder.textView2 = ((TextView) convertView.findViewById(R.id.tvCarDescriptionListText));
        vHolder.imageView = ((ImageView) convertView.findViewById(R.id.ivCarListMenuIcon));
        vHolder.relativeLayout = ((RelativeLayout) convertView.findViewById(R.id.relativeLayout));
        convertView.setTag(vHolder);


        CarItem c = mItems.get(position);
        final int pos = (int)c.getCarID();

        vHolder.imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                showCarEditDialog(pos); //THIS IS PASSING WRONG <--------------
            }
        });
    }
    return convertView;
}

最佳答案

使用ImageView.setTag()获取ImageVI上单击行的位置,单击为:

vHolder.imageView.setTag(pos);  // set current pos
vHolder.imageView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        showCarEditDialog(Integer.parseInt(v.getTag().toString()));
    }
});

07-24 09:47
查看更多