【发布时间】:2012-11-03 22:57:48
【问题描述】:
我正在使用 AndEngine 开发一款游戏,我需要向用户显示他的 Facebook 好友列表。
我为ListView 创建了我的自定义Adatper,加载完成后一切正常。
我自己的加载部分有问题。
ListView 在一个自定义对话框中,所以在这个对话框中,我正在运行一个AsyncTask 来获取朋友的信息,在那个AsyncTask 我有一个ProgressDialog。问题是,ProgressDialog 显示在包含待定列表的对话框后面(在加载时,它只是标题)。
我可以看到那个对话框后面的ProgressDialog“偷看”..
有什么想法吗?
这里有一些代码:
FriendsDialog.java
private ProgressDialog dialog;
//Constructor of the AsyncTask
public FriendsLoader(Context context) {
dialog = new ProgressDialog(context);
dialog.setMessage("Please wait..\nLoading Friends List.");
}
@Override
protected void onPreExecute() {
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
dialog.setView(inflater.inflate(R.layout.loading, null));
dialog.setMessage("Please wait..\nLoading friends.");
dialog.show();
}
@Override
protected void onPostExecute(ArrayList<HashMap<String, Object>> data) {
if (dialog.isShowing()) {
dialog.dismiss();
}
MyAdapter myAdapter = new MyAdapter(context, data);
listView = (ListView) findViewById(R.id.list);
listView.setAdapter(myAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> myAdapter, View myView, int myItemInt, long mylng) {
String id = (String) listView.getItemAtPosition(myItemInt);
listener.onUserSelected(id);
dismiss();
}
});
}
【问题讨论】:
-
很抱歉,当我阅读“Android ProgressDialog inside another dialog”之类的问题时,我的大脑开始沸腾。我认为你正在产生邪恶的东西。我的建议:尝试正确地思考,并按照必须做的方式做事。
-
起初我想单独使用 AndEngine 来执行此操作,但找不到方法..所以我要这样做。真的没那么复杂。带有列表的对话框,在加载数据时应该有加载指示器..
-
为什么不使用 ProgressBar 或类似的东西作为 Dialog 的内容?然后在加载完成后,只需更改其内容并将其替换为您的 ListView。
标签: java android dialog progressdialog