個別に読み込み件数を指定できた
select * from yql.query.multi where queries in ( "select * from feed where url='http://www.jra.go.jp/rss/jra-info.rdf' limit 3", "select * from feed where url='http://keiba.rakuten.co.jp/info/feed' limit 3" );
「yql.query.multi」を指定すれば、個別にクエリを設定できるので、読み込み件数を指定できました。しかし日時順にソートすることはまだできていないので、JRAのフィードが3件読み込まれた後に楽天競馬が3件読み込まれるようになっています。
var feed1 = "\"select * from feed where url='http://www.jra.go.jp/rss/jra-info.rdf' limit 3\"", feed2 = "\"select * from feed where url='http://keiba.rakuten.co.jp/info/feed' limit 3\""; var query = "select * from yql.query.multi where queries in (" + feed1 + "," + feed2 + ") | sort(field='date',descending='true')";
jsで書くときはダブルクオテーションをエスケープすることに注意します。
Ti.Yahoo.yql(query,function(d){ var rssItems = d.data.results; for(j = 0;j < rssItems.length;j++){ for(i = 0;i < rssItems[j].item.length;i++){ //タイトルや日時を取得する処理 } } );
2つのフィードを読み込むので、二重for文で処理します。
tableView.addEventListener("click",function(e){ //途中省略 entryView = Ti.UI.createWebView({ url:rssItems[(e.index / rssItems[0].item.length)|0].item[e.index % rssItems[0].item.length].link }); //途中省略 );
タッチイベントで、タッチした要素のリンク先を設定します。ちょっとコードが複雑になって、めんどくさくなってきました。
残った問題
ソートをどうやってやるのか
個別に読み込んで日時を別配列で格納して、ソートさせればできそうな気がします。しかし非常にめんどくさいです。
2つのフィードの合計にlimitを設定する
これをするには予め日時でソートされる必要があります。ソートされたフィードを新しい順で3件読み込むみたいなことをすればできるとかなと思います。
複数フィードを読み込む必要があるのか
開発に時間がかかりすぎているので、複数フィードを読み込む必要があるのか疑問に思ってきました。それよりも必要なフィードをタブにつき一つ表示したほうがわかりやすいのではと思ってきました。とにかく処理がめんどくさいので、一つのフィードに絞っていこうと思います。