我无法让我的对话框复选框在android studio中工作

时间:2016-10-12 13:47:17

标签: java android xml android-studio

我试图在用户点击按钮时出现一个显示“选择饮料”的按钮,会出现一个对话框,其中包含我已存储在数组中的饮品列表。

我知道问题是我说“检查布尔值”但我需要这个,因为我的项目存储在一个数组中。有人请帮助! 如果我删除布尔值被检查然后我显然在if语句中出现错误,其中显示“isChecked”

package com.example.liamchowney.myappoctober;


import android.app.AlertDialog;
import android.content.DialogInterface;
import android.support.v4.app.DialogFragment;
import android.app.Dialog;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;




public class Multiselection extends DialogFragment {

private static TextView text_view;
ArrayList<String> list = new ArrayList<String>(); //to store selection

@Override
@NonNull
public Dialog onCreateDialog(Bundle savedInstanceState)
{
    final String [] items = getResources().getStringArray(R.array.my_drinks_selection); //gets array items to screen
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setTitle("Choose drink").setSingleChoiceItems(R.array.my_drinks_selection, null, new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which, boolean isChecked) {

            if(isChecked)
            {
                list.add(items[which]); //adds selected item
            }
            else if(list.contains(items[which]))
            {
                list.remove(items[which]); //removes selected item if they uncheck
            }

        }
    }).setPositiveButton("OK", new DialogInterface.OnClickListener() { //to display the selected item done by user

        @Override
        public void onClick(DialogInterface dialog, int which) {
            String selections = ""; //default value
            for(String ms : list)
            {
                selections = selections + "\n" +ms;
            }
            Toast.makeText(getActivity(), "Drink Selection :" +selections, Toast.LENGTH_LONG).show();

        }
    });
    return builder.create();
   }
}

1 个答案:

答案 0 :(得分:1)

使用

onClick(DialogInterface dialog, int which) {
    list.add(items[which]);
}

如果您正在使用单选单选按钮。这样就可以选择指定索引处的项目。这就是您添加商品所需的全部内容。

我不会建议一个列表来添加单个选项的项目。而是将索引分配给变量,然后在单击OK时将该变量添加到列表中,否则您将为单个选项选择不必要的删除逻辑。

对于您的商品:

onClick(DialogInterface dialog, int which) {
    mySelectedChoice = which;
}

对于您的按钮:

onClick(DialogInterface dialog, int which) {
    list.add(items[mySelectedChoice]);
    //rest of your logic
}