单击图像以选中复选框?

时间:2016-07-22 07:11:17

标签: android imageview

我刚开始开发到android,请帮忙。

我无法弄清楚我错过了什么.. 复选框检查工作,我也想通过点击图像进行检查。

这部分效果很好:

        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

感谢。

2 个答案:

答案 0 :(得分:1)

保持常见的点击监听器,

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

然后将此侦听器设置为imageview和checkbox,如此,

holder.checkbox.setOnClickListener(clickListener);
holder.imageview.setOnClickListener(clickListener);

答案 1 :(得分:0)

holder.imageview.setOnClickListener(new View.OnClickListener()public void onClick(View v){
  public void onClick(View v){
     CheckBox cb = (CheckBox) v; // In here v is the ImageView not CheckBox so you will get java.lang.ClassCastException

在您的情况下,您可以使用

holder.imageview.setOnClickListener(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;
                }
            }
});