gpt4 book ai didi

android - 仅在选中项目时激活 AlertDialog 的 BUTTON_POSITIVE

转载 作者:行者123 更新时间:2023-11-29 23:38:07 25 4
gpt4 key购买 nike

我正在制作一个多选项目的 AlertDialog,当用户按下“确定”时获取选中的项目。这些项目将显示在 TextView 上。

我的问题是我想激活 AlertDialog 的“确定”BUTTON_POSITIVE 仅当至少选择了一项时。我的完整代码以及我想如何解决这个问题..

public class MainActivity extends AppCompatActivity {

Button mORder;
TextView mItemSelected;
String[] listItems;
boolean[]checkedItems;
ArrayList<Integer> mUserItems= new ArrayList<>();

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

mORder=findViewById(R.id.btnOrder);
mItemSelected=findViewById(R.id.selectedItems);

listItems=getResources().getStringArray(R.array.shopping_items);
checkedItems=new boolean[listItems.length];
mORder.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View view) {
final AlertDialog.Builder mBuilder= new AlertDialog.Builder(MainActivity.this);
mBuilder.setTitle("Practice language");
mBuilder.setMultiChoiceItems(listItems, checkedItems, new DialogInterface.OnMultiChoiceClickListener() {

@Override
public void onClick(DialogInterface dialogInterface, int position, boolean ischecked) {
if(ischecked){
mUserItems.add(position);
}
else {
mUserItems.remove(Integer.valueOf(position));
}
}
});
mBuilder.setCancelable(false);
mBuilder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int position) {
String item="";
for(int i=0 ;i<mUserItems.size();i++){
item= item + listItems[mUserItems.get(i)];
if (i != mUserItems.size()-1){
item=item+ ", ";
}
}
mItemSelected.setText(item);
}
});
final AlertDialog dialog =mBuilder.create();
dialog.show();
Log.i("userList ",""+mUserItems.size());
if((mUserItems.size()==0)){
((AlertDialog)dialog).getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);
}
else {
((AlertDialog)dialog).getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(true);
}
}
});
}
}

最佳答案

让您的 MainActivity 有一个用于 AlertDialog 的字段:

private AlertDialog dialog;

分配创建的AlertDialog:

// ... at the end of onCreate()...
dialog = builder.create();
dialog.show();
Log.i("userList ",""+mUserItems.size());
togglePositiveButtonEnabled();

新方法 togglePositiveButtonEnabled() 检查 mUserList 是否为空并启用/禁用对话框的 OK Button:

void togglePositiveButtonEnabled(){
if(dialog == null) return;
if((mUserItems.size()==0)){
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);
}
else{
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(true);
}
}

也可以从 OnMultiChoiceClickListener 内部调用此方法:

@Override
public void onClick(DialogInterface dialogInterface, int position, boolean ischecked){
if(ischecked){
mUserItems.add(position);
}
else {
mUserItems.remove(Integer.valueOf(position));
}
togglePositiveButtonEnabled();
}

关于android - 仅在选中项目时激活 AlertDialog 的 BUTTON_POSITIVE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52084256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com