1

Facebookのグループイベントからjsonを取得し、それらをテーブルビューに配置してAppceleratorモバイルアプリで使用するのに問題がありました。

アイデアは、これをカレンダーとして使用して、クラブのイベントを簡単な方法で表示することです。

イベントの名前を見せたいです。そのイベントの写真とイベントの日付。

すべてテーブルローに。

このコードを使用して、イベントの名前と日付を取得できる部分に到達しました。

Ti.UI.backgroundColor = '#dddddd';

var    access_token='AAACEdEose0cBAAICGa4tFTcZAqCOGm2w9qPYGZBwNtJ1oZAcwaMAP2DDHZCN58cvVBZCHZADZAZBTPC8tTnpfQ7uGKI5j3SbMYcRmWquZCdPzhwZDZD';

var url = "https://graph.facebook.com/64306617564/events?&access_token=" + access_token ;
var win = Ti.UI.createWindow();
var table = Ti.UI.createTableView();
var tableData = [];
var json, data, row, name, start_time, id;

var xhr = Ti.Network.createHTTPClient({
onload: function() {
// Ti.API.debug(this.responseText);

json = JSON.parse(this.responseText);
for (i = 0; i < json.data.length; i++) {
    data = json.data[i];
    row = Ti.UI.createTableViewRow({
        height:'60dp'
    });
  var  name = Ti.UI.createLabel({
        text:data.name,
        font:{
            fontSize:'18dp',
        fontWeight:'bold'
    },
    height:'auto',
    left:'50dp',
    top:'5dp',
    color:'#000',
    touchEnabled:true
    });



   var start_time = Ti.UI.createLabel({
    text:'"' + data.start_time + '"',
    font:{
        fontSize:'13dp'
    },
    height:'auto',
    left:'15dp',
    bottom:'5dp',
    color:'#000',
    touchEnabled:true
    });


    row.add(name);
    row.add(start_time);
    tableData.push(row);
    }

table.setData(tableData);
},
onerror: function(e) {
Ti.API.debug("STATUS: " + this.status);
Ti.API.debug("TEXT:   " + this.responseText);
Ti.API.debug("ERROR:  " + e.error);
alert('There was an error retrieving the remote data. Try again.');
},
timeout:5000
});

xhr.open("GET", url);
xhr.send();

しかし、クリックしたときに特定のイベントを新しいウィンドウで開きたい場合は、これをブラウザーに配置したときに画面の最後にあるイベントを取得します。

https://graph.facebook.com/64306617564/events?&access_token=AAACEdEose0cBAOLAFWMKPmvgqEwap1ldnl7DeZBDKJC6YTZC4Goh6K5NHsvpOFmFQaGp1IekVsCxZCZCz3lwGpRcQG9ZB

そして、アクセストークンは本当に速く期限切れになります。より長持ちするアクセストークンを作成する方法はありますか?

さて、私がウィンドウを開くために使用しているコードは次のとおりです。

table.addEventListener('click',function(e) {
        // Create the new window with the link from the post
        var blogWindow = Ti.UI.createWindow({
            title   : data.name,
            modal   : true,
            barColor: '#050505',
            backgroundColor: '#050505'              
        });
        var webView = Ti.UI.createWebView({url:'http://www.facebook.com/events/' + data.id});
        blogWindow.add(webView);

        // Create the close button to go in the left area of the navbar popup
        var close = Titanium.UI.createButton({
            title: 'Close',
            style: Titanium.UI.iPhone.SystemButtonStyle.PLAIN
        });
        blogWindow.setLeftNavButton(close);

        // Handle the close event
        close.addEventListener('click',function() {
            blogWindow.close();
        });



        blogWindow.open();
    });
win.add(table);
win.open();

私の意見では、行からIDを解析し、リンクの後に配置することで、クリックされたイベントを開く必要があります。

私は遅れていますか、それとも何が問題ですか?

どのイベントをクリックしても、最後のイベントを常に開くだけで構いません。

また、イベントのサムネイルを取得するにはどうすればよいですか?

plsヘルプ.......。

4

1 に答える 1

0

テーブルをクリックして利用できないデータから値を取得すると、カスタム変数を使用してそれを実現できrow.data = data;ますこれを使用しalert(e.source.data);て確認します。幸運

于 2012-08-04T07:44:33.883 に答える