2

私は ListView を使用しており、各リスト要素にいくつかのボタンがあります。

行のボタンをクリックすると、そのボタンが消えるはずです。クリックしたボタンはクリックすると消えます。問題は、他のリスト要素のボタンの一部もなくなっていることです。

たとえば、1 番目の要素のボタンをクリックすると、6 番目、11 番目、16 番目の要素のボタンにも影響します。また、7 番目の要素のボタンは、2 番目、12 番目、17 番目の要素に影響します。

その理由は、アダプターがデータ内のすべての要素のリスト要素を作成しないためです。画面に表示するのに十分なオブジェクトをいくつか作成するだけです。図のようにリストを下に行くと、一番上の要素が最後になり、その値が変更されます。そのため、最初の要素のボタンを非表示にすると、8 番目の要素のボタン (数字は画像からのもの) も非表示になります。

ここに画像の説明を入力

作成されたアイテムのコピーを使用することを避け、要素ごとに新しいアイテムを作成することは解決策になる可能性がありますが、非常に多くの行を表示した後、アプリケーションの速度が低下します。

何時間も探していましたが、解決策が見つかりませんでした。誰かが解決策を知っているか、少なくとも別の種類のアダプター、実装などを提案してくれることを願っています。

4

2 に答える 2

1

各要素のボタンの状態を追跡して、天気を表示または非表示にする必要があります。アダプターのgetView()メソッドで、現在の要素の状態を確認し、それに応じてボタンを非表示または表示します。このメソッドを使用するときは、非表示にするボタンの状態だけでなく、各ボタンの状態を必ず設定してください。ビューがリサイクルされると、ビューは古いものではなく新しいアイテムの状態を取得します。

于 2013-02-01T02:39:53.350 に答える
0

アマルはあなたの答えの一部を持っています。アダプターが getview 呼び出しを取得したら、再利用されたビューを完全に再初期化します。

あなたの速度の問題について。アダプターにデータを遅延ロードさせたいようです。そのデータの読み込みが遅いです。何かを与えなければなりません。この問題の一般的な解決策は、バックグラウンド スレッドでデータをロードすることです。

于 2013-02-01T04:08:22.167 に答える