2012-03-19 10 views
0

私のアダプタを更新doesntのユーザーのために表示されます......adapter.notifyDataSetChangeは()これは私のコードである

私の問題は、この方法を使用して更新されていないということです。

ありがとうございます!

+0

onResumeメソッドが実際に意図したとおりに呼び出された場合は、ログでチェックしましたか? – dan

+0

コードを共有してくださいListaAdapter – Blackbelt

答えて

1

アクティビティを再開するたびにアダプタを作成しないでください。 onCreate()に1度作成し、notifyDataSetChanged()onResume()に電話してください。

しかし、あなたの最大の問題は、onResume()で新しいアダプタを作成して、それをListViewに接続しないことです!あなたには、あなたのコードを維持しなければならない場合は、あなたがこれを行うonCreate(...)onResume()

+0

ありがとう!私はそれがこのように働いていたことを知っていませんでした........今あなたは私のコードをすべてあなたが意味するように変更するつもりです.... – zapotec

1

に新しいアダプタを作成した後、その後、それを行うには...

adaptador = new ListaAdapter(this, listaCompras); 
setListAdapter(adaptador); 

setListAdapter(adaptador)を追加し、あなたはへの参照を渡していますListView - new...への呼び出しによって作成されたListAdapterへの参照です。今adaptadorが新しいListAdapterへの新しい参照を持っていますが、ListView自体はまだあなたがonCreate(...)でインスタンス化最初ListAdapterへの参照を維持している

あなたがこれを行う onResume()

...

adaptador = new ListaAdapter(context, listaCompras); 
adaptador.notifyDataSetChanged(); 

... 。

最も簡単なのは、コードをonCreate(...)から完全に削除し、onResume()ListAdapterの作成とsetListAdapter(...)の呼び出しを処理するようにすることが最も簡単です。

+0

アプリが再開するたびにnweアダプターを作成することはかなりです廃棄物。あなたは一度だけそれを作成する必要があります – Mimminito

+0

@Mimminito:OK - 私は間違って言いました。 'onResume()'にチェックを入れて、アダプタが 'null'かどうかを調べ、' ListView'を作成して、必要に応じて使用するように設定します。私のポイントは、データが頻繁に変更される可能性があるため、onCreate(...)ではなくonResume()でこのようなことを行うのが最善であるということです。 – Squonk

+0

確かに、小切手を持っているのが良い習慣です。私は、アプリが再開するたびに人々が新しいリソースを作成する印象を得られなかったことを確認していました。 – Mimminito

関連する問題