事件更改不会在动态填充的Picker - Titanium SDK上触发

时间:2012-10-21 05:40:00

标签: javascript titanium titanium-mobile

我正在尝试创建一个自定义Picker,其数据来自远程JSON。问题在于它并没有引发“变化”。当我从选择器中选择一行时第一次选择器上的事件时,我必须关闭选择器并再次从选择器中选择一行,然后事件更改才有效。

var clubs_data = [];
//custom object to handle the httpClient
new K().scoutmobile.Tools.getData(new K().scoutmobile.URL_BASE, {Accion:new K().scoutmobile.CLUBS}, function(_response){
    if(response.status.codigo === "RESULT"){
        clubs_data.push(Ti.UI.createPickerRow({title:'select a club'}));
        for(_j in _response.data){
            clubs_data.push(Ti.UI.createPickerRow({color:'#fff',title: _response.data[_j].Propiedades.club_nombre.Valor, id:_response.data[_j].Propiedades.club_id.Valor}));

        inputClubs.add(clubs_data); //where inputClubs is created previously

    }else{                              
        new K().scoutmobile.Tools.createDialog('invalid_user_alert_dialog_title','invalid_user_alert_dialog_message');
    }
});

//event listener
inputClubs.addEventListener('change', function(e){
        Ti.API.info(e.row.id);
    });

win.add(inputClubs);

在Titanium Studio控制台中,我得到了这个:

[WARN][InputManagerService(   60)] Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@43f8dbb8

有什么想法会发生什么?

1 个答案:

答案 0 :(得分:1)

我有三个解决方案,其中没有一个足够好:

  1. 一个非常愚蠢的解决方案是让选择器在开始时指向空选项,然后用户需要更改它
  2. 如果使用该选择器值加载另一个UI元素,则可以使用默认(或第一个)选项预加载该部分
  3. 您可以修改Titanium SDK源代码,在这里他们写下这个日志“Window already focused”和fire change事件。这很简单,我已经为TabGroup控件做了这个,可能需要2个小时的时间(或者适用于Android或iOS)