0

我正在创建一个应用程序,它使用 Titanium 框架在应用程序用户中发送消息。在应用程序中,我必须显示用户之间的对话(消息线程)。我正在使用以下代码中给出的线程

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)));
    }
});
});

参考:显示消息线程中的最后一条消息。我从链接中的马蒂亚斯先生的回答中得到了提示。那里也给出了描述。可能对其他人有帮助。

于 2012-12-27T05:00:14.963 回答