[android]单击要检查的图像 checkbox 吗?

标签: Android imageview
发布时间: 2016/9/26 4:06:31
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我刚刚开始发展到 android ,请帮助。

我找不出我是失踪。 checkbox检查的工作,我还想再通过在图像上攻丝检查。

这一部分运作良好︰

        holder.checkbox.setId(position);
        holder.imageview.setId(position);
        holder.checkbox.setOnClickListener(new View.OnClickListener()
        {


            public void onClick(View v)
            {
                // TODO Auto-generated method stub
                CheckBox cb = (CheckBox) v;
                //ImageView cb1 = (ImageView) v;

                int id = cb.getId();


                if (thumbnailsselection[id])
                {
                    cb.setChecked(false);
                    thumbnailsselection[id] = false;
                } else
                {
                    cb.setChecked(true);
                    thumbnailsselection[id] = true;
                }

            //    ImageView im = (ImageView) v;

            }
        });
   ///////////////////////////////////////////////////////

这里是问题︰

 holder.imageview.setOnClickListener(new View.OnClickListener()
        {


            public void onClick(View v)
            {
                CheckBox cb = (CheckBox) v;
                int id = v.getId();

                if (thumbnailsselection[id])
                {
                    cb.setChecked(false);
                    thumbnailsselection[id] = false;
                } else
                {
                    cb.setChecked(true);
                    thumbnailsselection[id] = true;
                }


            }});

Logcat:

java.lang.ClassCastException: android.support.v7.widget.AppCompatImageView cannot be cast to android.widget.CheckBox

谢谢你。

解决方法 1:

保持一个共同的点击listener,

View.OnClickListener clickListener = new View.OnClickListener()
    {
        public void onClick(View v)
        {
            int id = holder.checkbox.getId();

            if (thumbnailsselection[id])
            {
                holder.checkbox.setChecked(false);
                thumbnailsselection[id] = false;
            } else
            {
                holder.checkbox.setChecked(true);
                thumbnailsselection[id] = true;
            }
        }
    };

然后将此listener设置为两个 imageviewcheckbox 就像这样,

holder.checkbox.setOnClickListener(clickListener);
holder.imageview.setOnClickListener(clickListener);
官方微信
官方QQ群
31647020