java - 如何在监听器内传递有关适配器的信息。

标签 java android adapter onclicklistener

int“pos”未正确传递。 当 ImageViewOnClick() 时,如何纠正值。 看来当监听器激活时信息不再准确。

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()获取ImageVIew上单击行的位置,如下所示:

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()));
    }
});

关于java - 如何在监听器内传递有关适配器的信息。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22550048/

相关文章:

android - SimpleCursorAdapter中如何绑定(bind)联系人姓名、电话、联系人照片?

java - 无法再编译

android - RecyclerView 布局发生变化,滚动时值被截断

java - 检查 EditText 值到 ListView android

android - 透明的 webm 视频在 Android 9.0 上的 Chrome for Android 68 上显示纯色背景

android - OpenCV Python 安卓

android - 被 "Advanced Task Killer"之类的应用程序杀死后如何重新启动服务?

java - 难以使用自定义适配器填充 GridView

java - Java中如何获取实例名称?

java - Minecraft bukkit 僵尸生成错误