java - android中的自定义复选框类

标签 java android xml checkbox

我需要在复选框的 onClickListener 中将复选框与其在 ListView 中的位置相关联。我的第一个解决方案是制作一个非常短的自定义 View ,该 View 扩展了复选框,但有一个额外的变量(位置)将在 getView() 中设置。

    public class ListCheckBox extends CheckBox {
    private int position = -1;

   public ListCheckBox(Context context)
   {super(context);}
   public ListCheckBox(Context context, AttributeSet attrs)
   {super(context,attrs);}
   public ListCheckBox(Context context, AttributeSet attrs, int defStyleAttr)
   {super(context,attrs,defStyleAttr);}
    @TargetApi(21)
    public ListCheckBox(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)
   {super(context,attrs,defStyleAttr,defStyleRes);}

    public int getPosition() {
        return position;
    }

    public void setPosition(int position) {
        this.position = position;
    }
}

它起作用了,只是它将复选框的颜色更改为黑色,而我所做的任何事情(包括更改 android:buttonTint)都无法更改它。现在我的解决方案是一个带有 View 键和整数值的 HashMap 来跟踪复选框和它们的位置,但是如果有人有一个不那么丑陋的解决方案或者任何关于为什么我不能改变复选框颜色的想法,将不胜感激。

最佳答案

您可以使用 setTag() 方法将一个额外的变量传递给 View ,然后您可以使用 getTag() 来获取额外的变量。这不需要自定义 CheckBox。

//set tag
checkBox.setTag(position);

//get tag
int position = (int)checkBox.getTag();

关于java - android中的自定义复选框类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31467246/

相关文章:

java - 我是 jsp 和 google 应用引擎的新手,收到此错误 : HTTP method GET is not supported by this URL

java - iterator.next() 可以从源中删除元素吗? ( java )

java - 如何使用 sikulix 和 java 获取 Windows 应用程序的页面加载时间?

java - 从 Viewholder 通知 RecyclerView Adapter 的最佳方式?

java - 正式或实用的 XML 标签长度限制?

java - 根据 Nutch 中的条件获取后拒绝 url

android - 具有Room错误处理的RxJava2-数据库主线程异常

java - getStringExtra() 为空时的默认值

java - spring oauth 2 的示例 xml 配置

java - 无法使用 dom4j 从 xml 字符串解析节点