0

Currency オブジェクトを含む ArrayList を作成しました (Currency には名前と価格があります)。
また、baseAdapter およびアプリケーション クラスを拡張するクラスも作成しました。したがって、Currency をリストに追加するたびに、次のコードを使用してアプリケーション クラスを通過します。

getApplicationClass().addCurrency(currency);

ただし、通貨の価格は常に更新されます。
どうすれば通貨価格を更新できるのでしょうか? ライブラリから使用できる機能はありますか?

(ArrayList はアプリケーション クラス内にあります)

4

1 に答える 1

0

通貨のリストを表示するために Application クラスに保持しても問題ありませんが、そのリストは BaseAdapter のサブクラスにもある必要があります。Application クラスを介してリストに通貨を追加すると、UI がリッスンしている BaseAdapter サブクラスがバイパスされます。Application クラスで addCurrency() メソッドを呼び出しているときに BaseAdapter のサブクラスを UI に接続している場合、UI はそれらの変更を認識しません。代わりに BaseAdapter サブクラスを介して追加し、notifyDataChanged() を呼び出して UI が変更を認識できるようにすることをお勧めします。また、Application クラス内に同じインスタンスへの参照が含まれているため (これはあなたが行ったことだと思います)、Application 参照も更新されます。

特定の通貨で価格が変更された場合は、BaseAdapter サブクラスで notifyDataChanged() を呼び出して、バッキング モデルの何かが変更されたため UI に再描画するように指示するだけで済みます。

あなたのプログラムの詳細を知らなくても、それが私ができるアドバイスのすべてであり、あなたが何をしているのかについてもいくつかの仮定を立てています (つまり、 Application クラス内の ArrayList は BaseAdapter サブクラスに与えられた同じインスタンスであり、コピーではありません) .

于 2012-09-27T14:55:43.360 に答える