在我的程序中,我從json URL檢索值,然後將它們顯示在listView中。現在我想從列表中刪除一些項目,所以當我單擊一個項目時,刪除API調用AsyncTask的doInBackground()。現在完成AsyncTask後,我想重新加載列表,以便可以看到更改。如何從Android中的AsyncTask刷新活動
我怎樣才能relaod列表中看到的變化..
我的AsyncTask是一個單獨的類。
這是我的AsyncTask代碼:
protected String doInBackground(String... DATA) {
// TODO Auto-generated method stub
rqst_type = DATA[0];
if(rqst_type.equals("del_top5"))
{
String url = DATA[1];
JsonParser jParser = new JsonParser();
JSONObject json = jParser.getJSONfromUrl(url+memberId);
Log.v(TAG_LOG, "del url: "+url+memberId);
try
{
message = json.getString(TAG_DELSCS);
Log.v(TAG_LOG, "msg "+TAG_DELSCS);
}
catch(JSONException e)
{
Log.v(TAG_LOG, String.valueOf(e));
}
}
return null;
}
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
if(rqst_type.equals("del_top5"))
{
if(message.equals("true"))
{
AlertDialog alertDialog = new AlertDialog.Builder(context).create();
alertDialog.setTitle("Course Deleted");
alertDialog.setMessage("Course Sucessfully Deleted");
alertDialog.setIcon(R.drawable.tick);
alertDialog.setButton("OK", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
}
});
alertDialog.show();
}
else if(message.equals("false"))
{
AlertDialog alertDialog = new AlertDialog.Builder(context).create();
alertDialog.setTitle("Error");
alertDialog.setMessage("Course Not Deleted");
alertDialog.setIcon(R.drawable.alert);
alertDialog.setButton("OK", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
}
});
alertDialog.show();
}
else
{
AlertDialog alertDialog = new AlertDialog.Builder(context).create();
alertDialog.setTitle("Error");
alertDialog.setMessage("Unknown Erroe Occured");
alertDialog.setIcon(R.drawable.alert);
alertDialog.setButton("OK", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
}
});
alertDialog.show();
}
}
progress.dismiss();
}
我活動的名稱爲MyTop5.class
,我想重裝當我點擊AlertDialog的OK鍵..
這是對我的coading ListAdapter:
ListAdapter adapter = new SimpleAdapter(this, LoadingScreen.top5List, R.layout.top5_list,
new String[] { TAG_GLFCRSNAME, TAG_GLFCRSID, TAG_CRTDATE, TAG_FCLTY, TAG_HOLES },
new int[] { R.id.top_golfname, R.id.top_courseid, R.id.top_createdate, R.id.top_fclty, R.id.top_holes });
setListAdapter(adapter);
在此先感謝..
我還將活動作爲參數以及上下文傳遞給AsyncTask。但我現在能夠找到notifyDataSetChanged()。我的AsyncTask類的名稱是LoadingScreen,所以我寫的代碼是LoadingScreen.this.activity.notifyAll()並獲得了強制關閉消息。我只收到notify()或notifyAll()。我怎麼能得到notifyDataSetChanged(); –
notifyDataSetChanged()是適配器上的方法,而不是活動。也許你可以通過適配器而不是傳遞活動?適配器有權訪問列表,以便您可以更改該列表,並在完成後可以對adapter.notifyDataSetChanged()進行更改。注意,不要更改列表指向的位置,否則會從適配器中刪除它的連接。 – span
你可以請我提供一些示例代碼...因爲我仍然無法在同一個類中調用notifyDataSetChanged(),我已經爲我的ListView創建了適配器。當我使用以下代碼時,我得到了相同的notify()和notifyAll():adapter.notify ...()。 –