not good but great

プログラミング、アート、映画・本の感想について書きます。

TitaniumでTableViewにrowを追加するときは、insertRowAfterよりもappendRow

背景

下までスクロールしたら、新しくTableViewに要素を追加しようと思いました。

insertRowAfterがうまくいかない

調べると「insertRowAfter」というのが出てきました。

insertRowAfter( index, row, [animation] ) : void

Parameters
index : Number
Index of the row to insert after.
row : Titanium.UI.TableViewRow/Dictionary
Row to insert.

ドキュメントには上のように書いてあり、その通りにして書いたはずですが、動かず。調べると、ドキュメントが間違っているという記事もありました。また挿入したい位置の一つ前のindexを指定するというのも面倒だと思いました。お尻に追加するだけで良かったので、途中に挿入することを考えない方法はないものかと思っていました。

・参考
Appcelerator Documentation
画面下部までスクロールしたタイミングでTableViewの情報更新する - 40歳からのキャリアチェンジ

appendRowを使う

調べると、「appendRow」を発見しました。

appendRow( row, [animation] ) : void
Appends a single row or an array of rows to the end of the table.

ドキュメントより抜粋してみました。どうやらお尻に追加できるようです。

//スクロールが下までいったとき
tableView.addEventListener("scrollEnd",function(e){
	//追加するrowを生成
	var newRow = makeRowLabel();
	//tableViewにrowを追加
	this.appendRow(newRow);
});

makeRowLabel()は自分で定義した関数です。ここでは詳しい内容は省略しています。
早速appendRow()に書き換えて実行すると、スクロールが下まで来たときに新しく要素が追加されてました。良かった!

・参考
TitaniumでTableViewにTableViewRowが追加できなくて死にたくなったメモ - リア充爆発日記