我试图在用户点击按钮时出现一个显示“选择饮料”的按钮,会出现一个对话框,其中包含我已存储在数组中的饮品列表。
我知道问题是我说“检查布尔值”但我需要这个,因为我的项目存储在一个数组中。有人请帮助! 如果我删除布尔值被检查然后我显然在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();
}
}
答案 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
}