【发布时间】:2015-10-06 13:17:20
【问题描述】:
我想在列表视图中设置单选复选框。 在此列表视图中,每行包含 2 个文本视图、一个按钮和一个复选框。 textview 数据从 sqlite 数据库中检索,因此,当我选中复选框时,另一个复选框未选中,并且仅选中列表视图中的单击复选框。 谢谢大家
【问题讨论】:
标签: android-listview android-checkbox
我想在列表视图中设置单选复选框。 在此列表视图中,每行包含 2 个文本视图、一个按钮和一个复选框。 textview 数据从 sqlite 数据库中检索,因此,当我选中复选框时,另一个复选框未选中,并且仅选中列表视图中的单击复选框。 谢谢大家
【问题讨论】:
标签: android-listview android-checkbox
您可以为此使用可检查的布局。
在您的 xml 类中插入可检查的布局,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<com.example.xxx.widget.CheckableLinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:orientation="horizontal"
android:padding="10dp" >
//Your checkbox and textview here
</com.example.xxx.widget.CheckableLinearLayout>
在您的 onItemClick 中插入此代码
if (itemcheck.isChecked()) {
itemcheck.setChecked(true);
} else {
itemcheck.setChecked(false);
}
itemcheck.setChecked(true);
【讨论】:
holder.checkbox.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view) {
if (position != selected && mSelectedRB != null)
{
mSelectedRB.setChecked(false);
}
selected = position;
mSelectedRB = (CheckBox) view;
//database.deleteAllRecords();
//database.insertRecord(rowItems.get(position).getLanguageID(), rowItems.get(position).getLanguage(), rowItems.get(position).getImageUrl());
}
});
if(selected != position)
{
holder.checkbox.setChecked(false);
}
else
{
holder.checkbox.setChecked(true);
if(holder.checkbox != null && holder.checkbox != mSelectedRB)
{
mSelectedRB = holder.checkbox;
}
}
//context.startActivity(new Intent(context, LanguageActivity.class));
convertView.setTag(holder);
}
else
{
holder = (ViewHolder) convertView.getTag();
}
LanguageDetails rowItem = (LanguageDetails) getItem(position);
holder.checkbox.setText(rowItem.getLanguage());
return convertView;
}`
【讨论】: