私はlistactivityを拡張し、このクラスで拡張されたアクティビティを持っています。私はbaseadapterを拡張するクラスを持っています。それがになっていますようアダプタのnotifyDataSetChanged()はリストビューを更新しません、なぜですか?
は今私listactivityに私はこののonCreate
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setListAdapter(new BuildingAdapter(this));
final ProgressDialog loading = new ProgressDialog(this);
loading.setProgressStyle(ProgressDialog.STYLE_SPINNER);
loading.setTitle("Laddar");
loading.setMessage("Hämtar data från servern");
loading.show();
new AsyncTask<Void, Void, DataPacket.Data>()
{
@Override
protected DataPacket.Data doInBackground(Void... params){
return ServerConnection.getBuildings();
}
@Override
protected void onPostExecute(DataPacket.Data param) {
((MainenanceApplication)getApplication()).setDataStructure(param);
loading.dismiss();
//((BuildingAdapter)getListAdapter()).notifyDataSetChanged();
setListAdapter(new BuildingAdapter(BuildingSelectionActivity.this));
}
}.execute();
}
を持ってこれは動作しますが、私の質問は、私は、リストアダプタが使用するデータ構造を更新onPostExecuteです。 なぜ私は単にnotifyDataSetChangedを呼び出すのですか?
私はその行を持っている場合、ビュー自体は更新されませんが、私がsetListAdapterを実行する場所の下で行を使用すると、すべて動作します。
notifyDataSetChanged()を使ってどのようにリストを更新するかを示すコードを置く方がよい場合があります。 –