0

Titanium Framework を使用してアプリ ユーザー内でメッセージを送信するアプリケーションを作成しています。アプリでは、ユーザー間の会話 (メッセージ スレッド) を表示する必要があります。次のコードで指定されているようにスレッドを取得しています

var tableView = Ti.UI.createTableView({
   top          : '10%',
   scrollable  : true,
   width        : '100%',
   minRowHeight: '50',
   bottom       : '10%'
});

/*getting the message threads and adding them to the tableview
  and displaying it while opening the window*/

win1.addEventListener('open', function(){
   tableData = [];
   Cloud.Messages.showThreads(function (e) {
       if (e.success) {
           Ti.API.info('Success: ' +'Count: ' + e.messages.length);
           for (var i = 0; i < e.messages.length; i++) {
               var message = e.messages[i];
               //alert(JSON.stringify(message));
               var row = Ti.UI.createTableViewRow({
                   title            : message.body,
                   backgroundColor : '#FF9900',
                   threadID     : message.thread_id ,
                   color            : 'blue'
               });

               tableData.push(row);
           }
           tableView.data = tableData;
       } else {
           alert('Error: ' + ((e.error && e.message) || JSON.stringify(e)));
       }
   });
});

tableViewRow(メッセージ本文としてマーク)の各スレッドの最後のメッセージを表示したい。ただし、各スレッドのメッセージ本文には、会話の最後のメッセージは表示されず、代わりに最初のメッセージが表示されます。

メッセージのイメージ.

誰でも私を助けてもらえますか?前もって感謝します!!

4

1 に答える 1

1

ついにできた。コードにいくつかの変更を加えました。

win1.addEventListener('open', function() {
tableData = [];
// show all threads
Cloud.Messages.showThreads(function(eThread) {
    if (eThread.success) {
        Ti.API.info('Total Threads: ' + eThread.messages.length);
        for (var i = 0; i < eThread.messages.length; i++) {
            var thread = eThread.messages[i];
            var message = "";
        // get the newest message from a thread
            Cloud.Messages.showThread({
                thread_id : thread.thread_id
            }, function(eMessage) {
                    if (eMessage.success) {
                        var totalMessages = eMessage.messages.length;
                        Ti.API.info('Total messages in the thread ' + totalMessages);
                         //Getting the last message in the thread. 
                        message = eMessage.messages[0];
                         var row = Ti.UI.createTableViewRow({
                                title : message.body,
                            backgroundColor : '#FF9900',
                                threadID : thread.thread_id,
                                color : 'blue'
                        });

                        tableData.push(row);
            tableView.data = tableData;
                } else {
                    alert('Error showThread: ' + ((eMessage.error && eMessage.message) || JSON.stringify(eMessage)));
                }
             }); 
        }
    } else {
        alert('Error showThreads: ' + ((eThread.error && eThread.message) || JSON.stringify(eThread)));
    }
});
});

参考:メッセージスレッドに最後のメッセージを表示します。リンクのMr.Matthiasの回答からヒントを得ました。そこにも説明が書かれています。他の誰かに役立つかもしれません。

于 2012-12-27T05:00:14.963 に答える