окно открывается дважды или более по одному клику в динамическом представлении таблицы - appcelerator - PullRequest
0 голосов
/ 05 июля 2011

Итак, у меня динамическое представление таблицы. когда я нажимаю на одну из строк, я получаю новый экран. Это работает, но в левом верхнем углу кнопка «Назад» показывает заголовок текущего окна, поэтому мне нужно нажать минимум 2 раза, чтобы вернуться на вкладку «Табличные представления». Есть идеи почему?

var win = Titanium.UI.currentWindow;
Titanium.include('strip_tags.js');  
var tab = Titanium.UI.currentTab;
var tableView = Titanium.UI.createTableView({top:43,        
separatorStyle: 'none',
    backgroundColor:'transparent'});
    win.add(tableView);
    Ti.UI.currentWindow.addEventListener('focus', function() {
        loadTweets();

});


function loadTweets()
{


var rowData = [];

var loader = Titanium.Network.createHTTPClient();

loader.open("GET","url", true);

loader.onload = function() 
{
    var tweets =JSON.parse(this.responseText);



    for (var i = 0; i < tweets.length; i++)
    {
        var id = tweets[i].id;
        var title = tweets[i].name; // The tweet message
        var special=tweets[i].special;
        if(special>0) {
            var price=tweets[i].special;
            var color2='#4C6B22';
        } else {
            var color2='#fff';
            var price=tweets[i].price;
        }


        var thumb = tweets[i].thumb; // The profile image
        title=title.replace('®', '');
        title=title.replace('™', '');


        var row = Titanium.UI.createTableViewRow({height:'auto',top:20 , backgroundImage:Ti.Filesystem.resourcesDirectory + '/images/row_bg.png', borderWidth:0, separatorStyle: 'none'});


        var post_view = Titanium.UI.createView({
            height:'auto', 
            layout:'vertical',
            top:0,
            right:5,
            bottom:0,
            left:5,
            borderWidth:0,
            height:49


        });

        var av_thumb = Titanium.UI.createImageView({
            url:thumb, // the image for the image view
            top:0,
            left:0,
            height:48,
            width:48
        });
        post_view.add(av_thumb);

        var av_title = Titanium.UI.createLabel({
            text:title,
            left:54,
            width:210,
            top:-30,
            bottom:2,
            height:16,
            textAlign:'left',
            color:'#fff',
            font:{fontFamily:'Trebuchet MS',fontSize:14,fontWeight:'bold'}
        });
        post_view.add(av_title);

        var av_desc = Titanium.UI.createLabel({
            text:special,
            left:270,
            top:-20,
            color:'#fff',
            bottom:2,
            height:'auto',
            width:236,
            textAlign:'left',
            font:{fontSize:14}
        });
        post_view.add(av_desc);

        row.add(post_view);

        row.className = "item"+i;


        row.thisTitle = title;
        row.thisId = id;

        rowData[i] = row;
    }

        var winCount = Titanium.UI.createLabel({
            text:tweets.length+' blalba',
            height:43,
            top:0,
            left:0,
            width:320,
            height:50,
            textAlign:'center',
            color:'#fff',
            backgroundImage:Ti.Filesystem.resourcesDirectory + '/images/row_bg.png',
            font:{fontFamily:'Trebuchet MS',fontSize:14,fontWeight:'bold'}
        });


        win.add(winCount);

    tableView.setData(rowData);
    tableView.addEventListener('click', function(e){



    var w2 = Titanium.UI.createWindow({
            title:e.rowData.thisTitle,
            url:'cikk.js',
            barColor:'#000',
            backgroundImage:Ti.Filesystem.resourcesDirectory + '/images/winbg.png'
        });
        w2.stringProp1 = strip_tags(e.rowData.thisId);

        tab.open(w2, {
            animated:true
        });



}   

)};

loader.send();
}

1 Ответ

0 голосов
/ 06 июля 2011

Я догадываюсь, что eventListener focus вызывается дважды, и это приводит к двойной загрузке твитов, что приводит к двойной загрузке tableView eventListener.

если вы собираетесь использовать focus для добавления eventListener, то я бы предложил использовать blur для удаления eventListener.

...