Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么';使用自定义布局检查给定的checkedItem_Java_Android_Android Listview_Android Dialogfragment - Fatal编程技术网

Java 为什么';使用自定义布局检查给定的checkedItem

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并实现可检查接口。然后将其用作我的列表项的根视图 我的自定义

我有一个DialogFragment,它用单选按钮显示单选项

这是我的密码:

我将
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();
        }
    }
}