多项选择DialogFragment选中的项目数

时间:2016-08-03 06:45:39

标签: android listview dialog multichoiceitems

我使用AlertDialog.Buiilder创建多选对话框

        mDialog =    new AlertDialog.Builder(getActivity()).setIconAttribute(mIcon).setTitle(mTitle)
            .setPositiveButton(mPositiveButton, new OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    mCallbacks.onPositiveClick(((AlertDialog) getDialog()).getListView().getCheckedItemPositions(), mChoices);
                }
            }).setNegativeButton(mNegativeButton, new OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    mCallbacks.onNegativeClick(((AlertDialog) getDialog()).getListView().getCheckedItemPositions());
                }
            }).setMultiChoiceItems(mChoices, mCheckedItems, new OnMultiChoiceClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                    if (mIsCheckedRequired) {
                        AlertDialog alertDialog = ((AlertDialog) dialog);

                        if (alertDialog.getListView().getCheckedItemCount() == 0)
                            alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);
                        else
                            alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(true);
                    }

                }
            }).create();

此外,我想在没有检查项目时禁用正面按钮:

    @Override
public void onStart() {
    super.onStart();
    if (mIsCheckedRequired && mDialog.getListView().getCheckedItemCount() == 0) {
        mDialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);
    }
}

mDialog.getListView()。getCheckedItemCount()总是在点击之前重新编译0,有没有办法知道点击之前的已检查项目数,除了有字段mCheckedItems数组并通过它运行?

1 个答案:

答案 0 :(得分:1)

为了更好地管理班级计数器。 并且onClick的每个OnMultiChoiceClickListener只需按项目计数重新初始化它的大小。 并且不要忘记在显示对话框时将其初始化为0。您还可以检查您的计数器是否为零,然后不要处理单击确定按钮。

希望它会对你有所帮助:)。