我想在listview上显示newwork服务器的信息。当我点击某个项目时,它会再次搜索网络,返回一些数据,在对话框中显示它们。我使用了两个AsyncTasks来实现它。但是,当我单击该项目两次(单击该项目一次没问题)时,它就会崩溃。我调试并发现它第二次甚至没有进入itemclicklistener方法。无法修复错误...非常感谢任何帮助。 以下是代码的一部分。首先是onitemclicklistener
private class lvVoteItemOnItemClickListener implements AdapterView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
HashMap<String, String> map = (HashMap<String, String>) lvVoteItem.getItemAtPosition(arg2);
if (clickID != Integer.parseInt(map.get("id"))) {
clickID = Integer.parseInt(map.get("id"));
new VoteAccountTask().execute(map.get("id"));
} else {
new AlertDialog.Builder(VoteSummaryActivity.this).setTitle(res)
.setIcon(null)
.setView(null)
.show();
String temp = "";
}
}
}
其次,show对话框AsyncTask
public class VoteAccountTask extends AsyncTask<String, Void, String> {
protected String doInBackground(String... param) {
return searchVoteAccountWebservice(Integer.parseInt(param[0]));
}
@Override
protected void onPostExecute(String result) {
//votedetail.itemID + signal + votedetail.vID + signal + votedetail.itemName + signal + votedetail.ifUserDefine + signal + votedetail.creater +signal + votedetail.createDate
super.onPostExecute(result);
res = setStringsByWebString(result, VoteSummaryActivity.this.getString(R.string.datasetserStr1), VoteSummaryActivity.this.getString(R.string.datasetserStr2));
new AlertDialog.Builder(VoteSummaryActivity.this).setTitle(res)
.setIcon(null)
.setView(null)
.show();
}
}
答案 0 :(得分:0)
只需执行Asynctask即可,无需检查以前的执行情况。不阻止UI。因此,每次单击时,按钮,textView或任何可点击的按钮都会触发asynctask。
我会在同样的情况下应用两种方法;