Java 为什么';使用自定义布局检查给定的checkedItem
我有一个DialogFragment,它用单选按钮显示单选项 这是我的密码: 我将Java 为什么';使用自定义布局检查给定的checkedItem,java,android,android-listview,android-dialogfragment,Java,Android,Android Listview,Android Dialogfragment,我有一个DialogFragment,它用单选按钮显示单选项 这是我的密码: 我将ArrayAdapter与android.R.layout.simple\u list\u item\u single\u choice一起在不同的位置使用,它会检查第一项。请注意,我已经为checkedItem参数指定了0。我认为我的自定义布局有问题 当用户打开对话框片段时,如何选择第一个自定义项 我发现我需要创建一个自定义LinearLayout并实现可检查接口。然后将其用作我的列表项的根视图 我的自定义
ArrayAdapter
与android.R.layout.simple\u list\u item\u single\u choice
一起在不同的位置使用,它会检查第一项。请注意,我已经为checkedItem
参数指定了0
。我认为我的自定义布局有问题
当用户打开对话框片段时,如何选择第一个自定义项 我发现我需要创建一个自定义LinearLayout并实现可检查接口。然后将其用作我的列表项的根视图 我的自定义线性布局:
公共类CheckableLinearLayout扩展了LinearLayout实现了Checkable{
无线按钮;
公共CheckableLinearLayout(上下文上下文、属性集属性、int-defStyle){
超级(上下文、属性、定义样式);
}
公共CheckableLinearLayout(上下文){
超级(上下文);
}
公共CheckableLinearLayout(上下文、属性集属性){
超级(上下文,attrs);
}
@凌驾
充气时受保护的空隙(){
超级充气();
查找检查视图(本);
}
//递归查找单选按钮(如果您知道更好的方法,请进行注释)
作废FindCheckalView(视图组父级){
对于(int i=0;i
我的列表项
以下是帮助我的文章:
当文章回答这个问题时,如果您能在回答中总结文章中的主要代码片段,那将很有帮助。总有一天,这个链接可能会断开,用户将无法再访问答案。你是对的。我会在答案中添加我的代码。非常感谢。
SimpleAdapter simpleAdapter = new SimpleAdapter(
getActivity(),
listItem, //this is a hashmap
R.layout.my_custom_list_item,
new String[] { "id", "name", "status" },
new int[] { R.id.textview_ID, R.id.textview_name, R.id.textview_status });
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Title").setSingleChoiceItems(simpleAdapter, 0, //check the first item
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInteface,int position) {
//do something
}
}).setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,int id) {
//do something
}
});
public class CheckableLinearLayout extends LinearLayout implements Checkable {
RadioButton mRadioButton;
public CheckableLinearLayout(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public CheckableLinearLayout(Context context) {
super(context);
}
public CheckableLinearLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onFinishInflate() {
super.onFinishInflate();
findCheckableView(this);
}
//finds RadioButton recursively (comment if you know a better way to do that)
void findCheckableView(ViewGroup parent) {
for (int i = 0; i < parent.getChildCount(); i++) {
View child = parent.getChildAt(i);
if (child instanceof ViewGroup) {
findCheckableView((ViewGroup) child);
} else if (child != null) {
if (child instanceof RadioButton) {
mRadioButton = (RadioButton) child;
}
}
}
}
@Override
public void setChecked(boolean checked) {
if (mRadioButton != null) {
mRadioButton.setChecked(checked);
}
}
@Override
public boolean isChecked() {
return mRadioButton != null ? mRadioButton.isChecked() : false;
}
@Override
public void toggle() {
if (mRadioButton != null) {
mRadioButton.toggle();
}
}
}