Показывает самый старый пост вместо реального поста - RSS-лента - Titanium mobile - PullRequest
0 голосов
/ 21 февраля 2012

Я пытаюсь создать RSS-канал на основе кухонной раковины XML RSS.

То, что я пытаюсь сделать, это получить RSS-канал в виде таблицы - когда вы нажимаете «новостную заметку», вы попадаете в новое окно - когда я хочу отобразить XML в следующем окне, которое я получаю значения из самого старого сообщения, а не конкретного сообщения, на которое вы щелкнули, - любая помощь приветствуется.

Ti.include('strip_tags.js');
// create table view data object
var data = [];

var xhr = Ti.Network.createHTTPClient();
//xhr.open("GET","http://v2.0.news.tmg.s3.amazonaws.com/feeds/news.xml");
xhr.open("GET","http://www.aftonbladet.se/kultur/rss.xml")
xhr.onload = function()
{
try
{
var doc = this.responseXML.documentElement;
var items = doc.getElementsByTagName("item");
var x = 0;
var doctitle = doc.evaluate("//channel/title/text()").item(0).nodeValue;
for (var c=0;c<items.length;c++)
{
  var item = items.item(c);
  /*var thumbnails = item.getElementsByTagName("media:thumbnail");
  if (thumbnails && thumbnails.length > 0)
  {
    var media = thumbnails.item(0).getAttribute("url");*/
    var date = item.getElementsByTagName("pubDate").item(0).text;
    var title = item.getElementsByTagName("title").item(0).text;
    var description = item.getElementsByTagName("description").item(0).text;
    var row = Ti.UI.createTableViewRow({height:80});

    /*Skapar en rubrik */
    var label = Ti.UI.createLabel({
      text:title,
      left:25,
      top:20,
      bottom:5,
      right:5
    });
    row.add(label);

    /*Skapar ett datum */
    var label1 = Ti.UI.createLabel({
      text:date,
      left:25,
      top:-30,
      bottom:5,
      right:5
    });
    row.add(label1);        

    /*var img = Ti.UI.createImageView({
      url:media,
      left:5,
      height:60,
      width:60
    });
    row.add(img);*/
    data[x++] = row;
    row.url = item.getElementsByTagName("link").item(0).text;
  //}
}
var tableview = Titanium.UI.createTableView({data:data});
Titanium.UI.currentWindow.add(tableview);
tableview.addEventListener('click',function(e)
{

/* Skapa window som artikeln kommer upp i */    
var w = Ti.UI.createWindow({
    title:doctitle
    });
/* Skapa en label som visas i windowet */   
var label2 = Titanium.UI.createLabel({
color:'#999',
text:date,
      left:10,
      top:-380,
      bottom:5,
      right:5,
font:{fontSize:20,fontFamily:'Helvetica Neue'},
});

var label3 = Titanium.UI.createLabel({
color:'#999',
text:description,
left:10,
top:-180,
bottom:5,
right:5,
font:{fontSize:20,fontFamily:'Helvetica Neue'},
});     

w.add(label2);
w.add(label3);

  var b = Titanium.UI.createButton({
    title:'Tillbaka',
    style:Titanium.UI.iPhone.SystemButtonStyle.PLAIN
  });
  w.setLeftNavButton(b);
  b.addEventListener('click',function()
  {
    w.close();
  });
  w.open({modal:true});
});
}
catch(E)
{
alert(E);
}
};
xhr.send();

1 Ответ

0 голосов
/ 21 февраля 2012

1- Вы должны определить таблицу вне функции.

var tableview = Titanium.UI.createTableView({});

2 - Установить данные для таблицы внутри функции.

tableView.setData(data);

3 - Создать новый элемент окна в событии щелчка при просмотре таблицы.

tableview.addEventListener('click',function(e)
{
   Ti.API.info(e.rowData.date);
}

4- Установите свойства строки в цикле for для получения данных метки.

row.date = date;
...