0

getView関数をオーバーロードするカスタムリストがあり、描画されている現在のアイテムのy位置を知る必要があります。そして、画面に表示されているものだけでなく、リスト全体に関連してそれが必要です。どうすればこれを見つけることができますか?

編集:アイテムの高さは異なります。

4

1 に答える 1

0

リストの一番上(表示されている画面の一番上ではない)を基準にしたものが必要なので、次を使用して計算できます。

int yPos = view.getHeight() * position;

編集:異なる高さ?リサイクラーはあまり役に立たないので、それはおそらくパフォーマンスを損なうでしょう。

この場合、魔法の方法はないと思います。現実的にあなたがしなければならないことは、リスト位置とyオフセットの配列を保持することです。

// Item at position 0, top starts at 0, height is 15
pos[0][0] = 0
pos[0][1] = 15

// Next item starts one pixel down from previous item's top, is 10 pixels tall
pos[1][0] = 16
pos[1][1] = 10

そして、getView内からデータを入力するだけです。このソリューションは、個々の高さと各アイテムの絶対オフセットを追跡することに注意してください。次のアイテムの位置を決定するには、前のアイテムの位置+高さが必要だからです。

于 2012-05-30T22:21:54.190 に答える