Android 列表视图中的 onClick 复选框未选中
Android onClick checkbox not checked in listview
我正在使用 CheckBox 开发 Customized ListView。当我们单击 ListView 的项目时,我试图检查单选 CheckBox。我该怎么做?
我的XML code
<TextView
android:id="@+id/addressTXT"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginTop="10dp"
android:text="Price" />
<CheckBox
android:id="@+id/addressCheckBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toRightOf="@+id/addressTXT"
android:layout_marginRight="40dp"
android:focusable="false"
android:focusableInTouchMode="false" />
然后单击 BaseAdapter
中的项目。
itemView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
我该怎么做?
你可以这样做:
itemView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
CheckBox box = v.findViewById(R.id.addressCheckBox); //get your checkbox
box.setChecked(!box.isChecked()); //toggle checkbox-state
}
});
首先,您必须将 onClickListener 用于复选框,而不是整个视图。
其次,在 XML 中,对于适配器,您必须将其用于 checkBox
android:focusable="true"
android:clickable="true"
如果您需要单独的 clickListeners 用于复选框和 listView 行,您需要 XML 中的此参数用于 checkBox
android:focusable="false"
android:clickable="true"
啊啊我遇到了同样的问题:)
我解决了这个问题,如下所示。
itemView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
for (int i = 0; i < parent.getChildCount(); i++) {
View view = parent.getChildAt(i);
CheckBox checkBox = (CheckBox) view
.findViewById(R.id.CheckBox);
checkBox.setChecked(false);
}
CheckBox checkBox = (CheckBox) v
.findViewById(R.id.CheckBox);
checkBox.setChecked(true);
}
});
我正在使用 CheckBox 开发 Customized ListView。当我们单击 ListView 的项目时,我试图检查单选 CheckBox。我该怎么做?
我的XML code
<TextView
android:id="@+id/addressTXT"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginTop="10dp"
android:text="Price" />
<CheckBox
android:id="@+id/addressCheckBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toRightOf="@+id/addressTXT"
android:layout_marginRight="40dp"
android:focusable="false"
android:focusableInTouchMode="false" />
然后单击 BaseAdapter
中的项目。
itemView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
我该怎么做?
你可以这样做:
itemView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
CheckBox box = v.findViewById(R.id.addressCheckBox); //get your checkbox
box.setChecked(!box.isChecked()); //toggle checkbox-state
}
});
首先,您必须将 onClickListener 用于复选框,而不是整个视图。 其次,在 XML 中,对于适配器,您必须将其用于 checkBox
android:focusable="true"
android:clickable="true"
如果您需要单独的 clickListeners 用于复选框和 listView 行,您需要 XML 中的此参数用于 checkBox
android:focusable="false"
android:clickable="true"
啊啊我遇到了同样的问题:) 我解决了这个问题,如下所示。
itemView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
for (int i = 0; i < parent.getChildCount(); i++) {
View view = parent.getChildAt(i);
CheckBox checkBox = (CheckBox) view
.findViewById(R.id.CheckBox);
checkBox.setChecked(false);
}
CheckBox checkBox = (CheckBox) v
.findViewById(R.id.CheckBox);
checkBox.setChecked(true);
}
});