0

配列コレクションをデータ プロバイダーとして使用するリスト コントロールがあります。配列コレクションは actionscript で初期化されます。リストは次のようになります。

<mx:List  width="500" id="activeMessages" styleName="messages" variableRowHeight="true" verticalScrollPolicy="off" horizontalScrollPolicy="off" 
 dataProvider="{activeMessageTitles}"/>

styleName .messages は次のようになります。

.messages{
            border-style:solid;
            corner-radius:4;
            border-color:#cccccc;
            padding:0 0 0 0;
            background-color:#DCDCDC;
            margin-bottom:400px;
            padding-bottom:120px;
        }

配列コレクションにはデータが動的にロードされ、検証されているため、必要なデータが含まれています。必要なデータは文ではなく単なるランダムな単語であり、任意の配列に対して 2 単語を超えないようにしてください。

var activeMessageTitles:ArrayCollection = new ArrayCollection();

問題はフォーマットにあります。dataProvider はすべてのアイテムを取得し、それらはリストに表示されます。唯一の問題は、リスト内の任意の 2 つの行項目間のスペースが大きく、任意の量のスペースを占有することです。真ん中に大量のスペースを設けるのではなく、リスト項目を次々にレンダリングしたいと思います。

ここで何がうまくいかなかったのかを誰でも特定できますか?

4

1 に答える 1

1

問題は仮想化のようです。リストはアイテム レンダラーをリサイクルし、画面に表示されるものを表示するのに十分な量だけを使用します。スクロールすると、flex は表示されなくなったレンダラーを取得し、表示されるレンダラーに再利用します。リサイクルされたレンダラーでのメッセージの大きさに応じて、挿入される新しいメッセージが小さい場合でも、その大きな高さは保持されます。

これを修正するには、アイテム レンダラー (たくさんのチュートリアルがあります) を作成し、その set data() メソッドをオーバーライドして、新しいコンテンツに合わせてレンダラーのサイズを変更できるようにします。

詳細については、次のリンクを参照してください。

http://www.adobe.com/devnet/flex/articles/itemrenderers_pt1.html

于 2012-10-30T20:11:09.523 に答える