这是我的代码,用于检查互联网并下载XMl并在ListView
中显示
我想要的是,在加载XML时,显示我的自定义layout
或显示加载图片。
如果我应该使用AsynceTask
,请解释如何。谢谢。
ArrayList<HashMap<String, String>> menuItems = new ArrayList<HashMap<String, String>>();
XMLParser parser = new XMLParser();
String xml = parser.getXmlFromUrl(URL); // getting XML
Document doc = parser.getDomElement(xml); // getting DOM element
NodeList nl = doc.getElementsByTagName(KEY_ITEM);
// looping through all item nodes <item>
for (int i = 0; i < nl.getLength(); i++) {
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
Element e = (Element) nl.item(i);
// adding each child node to HashMap key => value
map.put(KEY_ID, parser.getValue(e, KEY_ID));
map.put(KEY_NAME, parser.getValue(e, KEY_NAME));
map.put(KEY_COST, parser.getValue(e, KEY_COST));
map.put(KEY_DESC, parser.getValue(e, KEY_DESC));
// adding HashList to ArrayList
menuItems.add(map);
}
// Adding menuItems to ListView
ListAdapter adapter = new SimpleAdapter(this, menuItems,
R.layout.list_item,
new String[] { KEY_COST,KEY_NAME,KEY_DESC,KEY_ID}, new int
[] {
R.id.cost,R.id.name,R.id.desciption,R.id.linke});
setListAdapter(adapter);
答案 0 :(得分:1)
是的,AsyncTask
对此有好处。
onPreExecute()
中加载时显示您想要的任何图像/布局。如果您愿意,可以使用ProgressDialog
/ ProgressBar
或在此处显示其他内容。doInBackground()
ProgressDialog
/ ProgressBar
,图片或您在onPostExecute()
中决定使用的任何内容。另外,请使用此方法更新Adapter
。 AsyncTask
可以使Activity
成为您{{1}}的内部课程。请务必仔细阅读AsyncTask Docs几次,了解它们的工作原理。
答案 1 :(得分:0)
@Override
protected void onPreExecute() {
super.onPreExecute();
progress = ProgressDialog.show(activity, activity.getString(R.string.spinner_title), activity.getString(R.string.spinner_message_retrieving), true);}
@Override
protected void doInBackground() {
super.onPreExecute();
// do here network stuff
}
protected void onPostExecute(Void result) {
progress.dismiss();}
这是你的asynctask方法的一部分