的onPostExecute()方法,我有一個的AsyncTask匿名下課瞭解使用接口回調,我想送它生成回活動類中的數據,而不必使用不用彷徨拖延UI線程()。我雖然有一些麻煩。我到處搜索,我發現了很多答案,但沒有什麼能夠真正把握它(對我來說)是一種真正可以理解的方式。所以,這是我的序列:嘗試的的AsyncTask
a。定義一個接口
包com.example.jsonbourne;
公共接口AsyncTaskInterface {
public void callback(); }
灣在AsyncTask類中,創建一個偵聽器方法:
public void setListener(AsyncTaskInterface listener) {
mListener = listener;
}
c。在onPostExecute()設置監聽器的回調,以便實現類將被稱爲:
@Override
protected void onPostExecute(Void result) {
//CALLBACK INTERFACE IMPLEMENTATION
mListener.callback();
}
d。在UI活動,設置的AsyncTask對象的監聽器:
@Override
public void onCreate(Bundle firebug) {
super.onCreate(firebug);
setContentView(R.layout.list_user);
;
lv = (ListView) findViewById(R.id.listv);
gj = new GetJson(this);
// CALLBACK INTERFACE IMPLEMENTATION
gj.setListener(this);
}
(LV,GJ是活動類聲明之後聲明的類對象)
即最後,在UI類中實現接口回調方法:
public void callback() {
ArrayList<String> al = gj.getData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(UserList.this,
android.R.layout.simple_list_item_1, al);
lv.setAdapter(adapter);
Toast.makeText(this, "Synchronization complete", Toast.LENGTH_SHORT)
.show();
}
雖然它不起作用。有任何想法嗎?我的意思是「它不起作用」是ListView沒有被填充,但是如果我在AsyncTask上調用.execute()。get(),它實際上會做。