aster-jp's diary

未熟なので学ブログ

BufferedListのバグ

aster-jpです。

 

sencha touchをご存じでしょうか。

すでにsencha touch2が出てきているのですが、私はversion1を使っています。

senchaとはWebアプリケーションをスマートフォンらしいデザインで作成できるライブラリです。

楽にスマートフォン向けのWebアプリを開発できるわけです。

詳しくはリンク先を見てください。

 

 

今日はsenchaのライブラリの1つとして開発されたBufferedListのバグについて書いておきます。

 このライブラリの機能は大量のデータ(1000以上くらいでしょうかね)をリスト形式にして表示するというものです。

単純にリストのコンポーネントを使うとデータ量に比例してメモリも使用するのでiPadSafariがすぐ落ちてしまいますので、このようなライブラリがあると助かります。

BufferedListはブラウザにのせるデータを動的に変化させます。

例えば1000のデータのうち100だけを表示し、ユーザのスクロールに応じて前 or 後の100のデータに更新します。

これですべてのデータを表示せずに済むのでメモリ使用量も爆発しないわけですね。

 

 

しかし先日、ユーザがリストをスクロールして一番下まで来たらデータを追加して表示しようとするとうまく動いてくれないという問題が起きました。

例えば1000のデータを渡して、単純にデータを100追加すると画面が真っ白になり、refreshメソッドを呼ぶとリストの上の方に(勝手に!)少しスクロールしデータが追加されます。

 

うーん。。。

ユーザから追加データを見れるけど、このときの動きは許容できるものではありませんね。

そして、”下までスクロールしてデータ追加”の動作を繰り返すとさらにおかしくなります(言葉で説明できません笑)。

 

きっとリストの内部の高さが最初の描画の時に決まってしまっていて、

データ追加によって高さが変わるべきなのに変わっていないからおかしいのかもしれません。

頑張って直したらまた記事を書きます。おわり