我有一個AsyncTask來加載ListView中的條目,每次創建一個類的新實例,其中varibles將被保存並讓它們從一個擴展自己的Adapter中加載作爲BaseAdapter。AsyncTask不會讓我使用我自己的類
類看起來是這樣的:
public class PictureResults
{
private long id;
private String pictureURL;
public void setId(long id)
{
this.id = id;
}
public long getId()
{
return id;
}
public void setPictureURL(String pictureURL)
{
this.pictureURL = pictureURL;
}
public String getPictureURL()
{
return pictureURL;
}
}
這是我的AsyncTask類:
private class getPictureDataTask extends AsyncTask<Long, String, Void>
{
protected PictureResults doInBackground(Long... param)
{
PictureResults pr;
pr = new PictureResults();
pr.setId(param[0]);
pr.setPictureURL("http://www.myurl.com");
return pr;
}
protected void onProgressUpdate(String... response)
{
//do nothing
}
protected void onPostExecute(PictureResults ret)
{
picResults.add(ret); //picResults is an ArrayList<PictureResults>
ret.loadPicture(customAdapter);
customAdapter.notifyDataSetChanged();
}
}
出現的主要問題是,Eclipse的讓我瞭解以下內容:
The return type is incompatible with AsyncTask<Long,String,Void>.doInBackground(Long[])
尤其重要的是customAdapter.notifyDataSetChanged();
將在執行,因爲在onProgressUpdate
有時我的應用程序崩潰導致從後臺線程更改ListView。
爲什麼我不能使用PictureResults作爲類型?
BTW:我這是怎麼執行的AsyncTask:
Long hey = (long) 1;
new getPictureDataTask().execute(hey);
當你擴展的AsyncTask <1,2,3>,3是指doInBackground返回的對象,所以你應該改變,從虛空到PictureResults。 –