我在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仍未显示。我在这做错了什么?是否有比这更好的方法来阻止用户做某事但是等待?
提前致谢
答案 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...
}
}):
您需要将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()