问题描述
我需要在复选框'onClickListener中将复选框与列表视图中的位置相关联。 我的第一个解决方案是创建一个非常短的自定义视图,扩展复选框,但有一个额外的变量(位置)将在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)都可以改变它。 现在我的解决方案是一个带有视图键和整数值的HashMap,它跟踪复选框和它们的位置,但是如果有人有一个不那么难看的解决方案或任何想法为什么我无法改变复选框的颜色,非常感谢。
1楼
您可以使用setTag()的方法将额外的变量传递给视图,然后您可以使用getTag()来获取额外的变量。 这不需要自定义CheckBox。
//set tag
checkBox.setTag(position);
//get tag
int position = (int)checkBox.getTag();