2011-07-07 4 views
1

私は、サーバーからフェッチしているデータを使用してデータを取り込む必要があるListViewビューを持っています。データのフェッチはAsyncTaskバックグラウンドスレッドで行われます。なぜこのコードでonCreateの後にListViewを設定できないのですか?

  ListView view = new ListView(RestaurantInfo.this); 
      CustomAdapter adapter = new CustomAdapter(RestaurantInfo.this, R.layout.restaurant_info, R.id.dish_name, data); 
      view.setAdapter(adapter); 
      LinearLayout layout = (LinearLayout) findViewById(R.id.restaurant_info_layout); 
      Button theView = new Button(RestaurantInfo.this); 
      layout.addView(theView); 

まったく同じコードが動作 - 上記のコードは、(アプリブロック、サーバがリクエストを提供していまで応答しなくなる原因となる)のonCreate関数内に配置された場合に活性にアイテムをロードします。同じコードがAsyncTaskのonPostExecuteに配置されていると、これはなぜ機能しませんか?あなたの非同期タスクが

答えて

2

、あなたのデータをロードし終えたときに)(adapter.notifyDataSetChangedを呼んでくださいを終了するとき

1

いけない

CustomAdapter adapter = new CustomAdapter(RestaurantInfo.this, R.layout.restaurant_info, R.id.dish_name, data); 
view.setAdapter(adapter); 
のonCreate

にこれらの行を呼び出すそれらを呼び出しますか?これは、リストビューにリフレッシュする必要があることを通知するために必要で、AsyncTaskのpostExecuteメソッドで実行する必要があります。

関連する問題