Ti.UI.TableViewRowの'className'プロパティが、カスタム行を作成するときにどのように役立つかを知りたいです。
たとえば、次の方法でテーブルビューにカスタム行を入力します。
function populateTableView(tableView, data) {
var rows = [];
var row;
var title, image;
var i;
for (i = 0; i < data.length; i++) {
title = Ti.UI.createLabel({
text : data[i].title,
width : 100,
height: 30,
top: 5,
left: 25
});
image = Ti.UI.createImage({
image : 'some_image.png',
width: 30,
height: 30,
top: 5,
left: 5
});
/* and, like, 5+ more views or whatever */
row = Ti.UI.createTableViewRow();
row.add(titleLabel);
row.add(image);
rows.push(row);
}
tableView.setData(rows);
}
もちろん、この「カスタム」行の例は、TableViewRowの標準title
とプロパティを使用して簡単に作成できますが、それは重要ではありません。image
新しいラベル、画像ビュー、およびテーブルビューの他の子ビューの割り当ては、再利用を優先してどのように防止されますか?iOSでは、これは、-[UITableView dequeueReusableCellWithIdentifier:]
現在データの表示に使用されていないが、すでに必要な子ビューを持っている「reservoir」(ここでは「className」は「identifier」)から行オブジェクトをフェッチするメソッドを使用することで実現されます。その中に正しくレイアウトされているため、含まれているデータ(テキスト、画像データなど)を更新するだけで済みます。
このシステムは信じられないほど単純なので、TitaniumAPIで採用されている方法がこれをサポートしていないと私は信じるのに多くの問題を抱えています。
APIを読んでウェブを検索した後、私はこれが事実だと思います。'className'プロパティは、Titaniumでテーブルビューをより効率的にする簡単な方法として推奨されていますが、カスタムテーブルビューの行との関係はまったく説明されていません。誰かが私のためにこの問題を明確にすることができれば、私は非常に感謝するでしょう。