-1
OK、ブロードキャストレシーバが呼び出されました。onReceive()
メソッドでは、静的データを使用して新しいアダプタでギャラリーを更新します。すべてはUIスレッドで行われました。奇妙なギャラリー+ブロードキャストレシーバの動作
ただし、変更はありません。古いデータはギャラリーに残されていますが、コードをデバッグして無効にした後に更新を行うと、ああ、BTW、ビューはViewFlipperにありますが、新しいアダプタを作成する前に適切なビューに変更します。だから私は競争状態にある、これは普通ですか?そうでない場合、私は何をすべきですか?
以下は、私がonRecieve()
で話していることのサンプルです。
onRecieve() {
mFlipper.setDisplayedChild(0);
mNavAdapter.addCategory(-1);
mGalNav.setSelection(0);
getCategoryProducts(-1);
}
void getCategoryProducts(int category) {
mGalProducts.setAdapter(new DealCheckInAdapter(this,
getCheckInProducts()));
mGalProducts.invalidate();
}
しかし、その新しいアダプタ私はnotifydatasetchanged() – L7ColWinters
を呼び出す必要はないはずですが、これはあなたが最初にそれをやっているときにアクティビティのonCreate()内でそれを実行している場合にのみ当てはまります。それ以外の場合は、新しいアダプタでlistViewをリフレッシュしません。私のアドバイス - あなたは新しいデータがあるたびに作成しないでください - 新しいアダプタ - ただし、アダプタを表すListにデータを追加/置換し、notifyDataSetChanged()を呼び出してください。これは正しい方法です –
私のギャラリーは複数のアダプタのデータを表示する必要があります。インスタンスを保持して無効化しようとしましたが、それでも正しく動作しません。私は内部的にデータを変更していないので、私はnotifyDataSetChanged()を必要としません。ギャラリーがデータ用に使用するアダプタを変更するだけです。 – L7ColWinters