私がやりたかったことは、SQLite に格納した日時の値(yyyy/MM/dd HH:mm:ss)を使っての降順のソートでした。
comparator を実装すればソートとかが出来るようなことを
に書いてあるわけですが、今ひとつこの説明だけでは分かりません。
ベースとなっている Backbone.js の仕様も参照しないと分からないです。
では、comparator に実装する関数について
"sortBy" comparator functions take a model and return a numeric or string value by which the model should be ordered relative to others.
"sort" comparator functions take two models, and return -1 if the first model should come before the second, 0 if they are of the same rank and 1 if the first model should come after.
と
- 1つのモデル中のデータを使って、何かソートの基準となる値を1つ返す方法
- 2つのモデルの値を比較して(モデル中の複数の項目を比較して良い)、その結果、2つをソートしたい順番に応じた値(-1,0,1)を返す方法
の2種類の方法を用意しています。
(実装例などはこちらを参照 → Backbone.js 日本語リファレンス)
私自身のは、単純に1項目(日時)で降順にしたかっただけなので、
- 前者の方法を取り
- yyyy/MM/dd HH:mm:ss からいわゆるUNIXタイムスタンプを取得し、それをマイナスした値を返すようにした
(これで大きい日付の方が、小さい値を返すことになるので)
実際の実装はこんな感じです。
comparator : function(item) {
return -(new Date(item.get('date_when')).getTime());
}
このように分かってみれば、モデルのデータを基に、何らかの形で希望の数値・文字列に加工して返すだけでソートが実現できますので簡単で便利だと思います。
この Model を Table View 辺りに binding すれば、それだけで希望のソート順で表示できるようになります。
Android アプリを Titanium Studio/Alloy を使って作ったので、その際にひっかかったことを、Tips で書いていってます。
実際に同じところで躓いた人がいて、それの解決のお役に立てば、と思っています。
ちなみに環境は Windows + Titanium Studio 3.3 + Android用開発となっています。
ちなみに環境は Windows + Titanium Studio 3.3 + Android用開発となっています。
0 件のコメント:
コメントを投稿