显示消息线程中的最后一条消息:Titanium.Cloud.Messages

时间:2012-12-26 11:16:29

标签: titanium message appcelerator titanium-mobile

我正在创建一个应用程序,使用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中每个线程中的最后一条消息(标记为消息正文)。但是每个线程的消息体不显示对话中的最后一条消息,而是显示第一条消息。

image of message

有人能帮帮我吗?在此先感谢!!

1 个答案:

答案 0 :(得分: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)));
    }
});
});

参考:Display the last message in Message Threads。我从马蒂亚斯先生的链接中得到了回答。那里也给出了描述。可能对其他人有帮助。