等到AlertDialog显示

时间:2014-01-29 15:39:09

标签: android progressdialog

我在ListView中有一些按钮。当用户点击按钮时,会弹出自定义 AlertDialog 。 但是,需要一些时间才能显示AlertDialog ,因为有一些图像需要加载。

我想确保用户在加载AlertDialog时无法再点击按钮,所以我实现了一个ProgressDialog,它立即显示onClick并在AlertDialog出现时立即解除。

slotViewHolder.layout.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        ProgressDialog progressDialog = new ProgressDialog(context);
        progressDialog.setMessage("showing dialog...");
        progressDialog.show();

        loadDialogAndDoSomeAction();

        progressDialog.dismiss();
     }
});

ProgressDialog仍未显示。我在这做错了什么?是否有比这更好的方法来阻止用户做某事但是等待?

提前致谢

3 个答案:

答案 0 :(得分:0)

您可以在自定义适配器中

覆盖

public boolean areAllItemsEnabled ();

只需保留一个布尔值作为适配器的成员,当您单击它时将其更改为false。

答案 1 :(得分:0)

Dialog有一个OnShowListener。您可以在AlertDialog上实施此操作。然后关闭您的ProgressDialog,然后再次点击Views或者您需要的任何内容。

myAlert.setOnShowListener(new OnShowListener()
{
    @Override
    public void onShow(DialogInterface Dialog)
    {
         progressDialog.dismiss();
         // here you can make things clickable, etc...
    }
}):

onShow Docs

您需要将ProgressDialog成为会员变量,以便在onClick()onShow()中访问该变量。

答案 2 :(得分:0)

好的,我在onShowListener

上实施progressDialog解决了这个问题
slotViewHolder.layout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
    ProgressDialog progressDialog = new ProgressDialog(context);
    progressDialog.setMessage("showing dialog...");

    progressDialog.setOnShowListener(new OnShowListener() {

    @Override
    public void onShow(DialogInterface dialog) {
           loadDialogAndDoSomeAction();
    }

    progressDialog.show();
});     

我在[{1}}

中解雇了ProgressDialog中的Alertdialog.onShow()