android - 启用 Edit Box Android 的复选框
问题描述
我需要创建一个餐厅类型列表。我已经编写了一个简单的警报对话框,其中存在一个复选框列表。但我希望最后一个,称为“更多”启用一个编辑框,用户可以在其中编写他的自定义类型,但我不知道该怎么做。我是初学者。
这是我的应用程序的当前输出:
我想变成这样:
如果需要,这里有一些对话框代码:
private TextView text;
private String[] listItems;
private boolean[] checkedItems;
private ArrayList<Integer> selectedItems = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text = findViewById(R.id.textView);
listItems = getResources().getStringArray(R.array.menu);
checkedItems = new boolean[listItems.length];
text.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("Type of cusine");
builder.setMultiChoiceItems(listItems, checkedItems, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
if(isChecked){
if(!selectedItems.contains(which)){
if(which == listItems.length-1){
dialog.dismiss();
AlertDialog.Builder builder2 = new AlertDialog.Builder(MainActivity.this);
builder2.setTitle("Enter your type");
}
selectedItems.add(which);
}
}else if(selectedItems.contains(which)){
selectedItems.remove(which); //To avoid duplicates
}
}
});
builder.setCancelable(false);
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String item = "";
for(int i=0; i<selectedItems.size(); i++){
item = item + listItems[selectedItems.get(i)];
if(i != selectedItems.size() - 1){
item = item + ", ";
}
}
text.setText(item);
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.setNeutralButton("Clear all", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
for(int i=0; i<checkedItems.length; i++){
checkedItems[i] = false;
selectedItems.clear();
text.setText("");
}
}
});
AlertDialog dialog = builder.create();
dialog.show();
}
});
}
解决方案
推荐阅读
- c++ - 如何从函数返回具有多个值的数组?C++
- kubernetes - GKE 中同时运行的 Pod 数量的限制因素是什么?
- sql - 是否可以测试列的存在,然后根据列是否存在来选择操作?
- python - 将字典合并到数据框,其中两个字典值都是标量
- html - React.js(参考错误:React 未定义)
- c++ - error: request for memver '' in '', which is of non-class type 'int*'//使用void函数内部的方法打印结构中的信息
- tableau-api - 是否可以使用 tableauserverclient 更改 twb 文件的数据源?
- python - 尝试在接受 int 和 str 值的同时中断计算器程序的 while 循环
- r - 如何将调查包用于分层后的配额样本?
- php - PHP“preg_match”检查文本是否包含小字符