Appcelerator - грешка в ListView (само в Android)

Разработвам приложение с рамка на Appcelerator (използвайки Appcelerator Studio), но срещнах проблем без решение (все още).

Създавам списък с всички държави по света и свързания с тях телефонен префикс, т.е. „Съединени щати +1“, „Обединено кралство +44“ и т.н. Използвам ListView, тъй като потребителят ще трябва да избере един. В iOS всичко работи чудесно, но когато стартирам приложението във физическото си устройство с Android, всички ListItems са представени, но не и текстът им. Имам предвид, че в iOS виждам всички държави и съответното им име във всеки ред. В Android виждам, че има над 150 реда в моя ListView, мога да щракна върху тези редове, приложението ще избере съответната държава, но не виждам отпечатания текст в редовете.

Използвам ItemTemplate и след това създавам (с Javascript) ListSection, към който добавям елементите (като ги добавям динамично чрез свойството bindId).

Виждал съм, че други приложения, създадени с Appcelerator, нямат този проблем, така че се опитвам да разбера къде греша.

countryList.xml

<Alloy>
    <Window class="container" id="win_firstStart_countryList">
        <ListView id="ListView_prefixes">
            <SearchBar id="searchBar_countries"/>
            <Templates>
                <ItemTemplate id="countryCodeTempl" name="countryCodeTempl">
                    <Label id="label_countryName"/>
                    <Label id="label_countryPrefix"/>
                </ItemTemplate>
            </Templates>
        </ListView>
    </Window>
</Alloy>

countryList.tss

"#ListView_prefixes": {
        "left": "0.00%",
        "top": "0%",
        "defaultItemTemplate": "countryCodeTempl"
    },
"#countryCodeTempl": {
    "color": "#000000",
    "backgroundColor": "#000000",
 },
 "#label_countryName": {
    "color": "#000000",
    "font": {fontSize:'18dp',fontFamily:'',fontStyle:'',fontWeight:''},
    "left": "3%",
    "top": "4dp",
    "bindId": "countryName",
    "height": Ti.UI.SIZE,
    "width": "45%",
    "backgroundColor": "#ff0000",
 },
 "#label_countryPrefix": {
    "bindId": "countryPrefix",
    "top": "4dp",
    "width": "45%",
    "height": Ti.UI.SIZE,
    "color": "#000000",
    "font": {fontSize:'18dp',fontFamily:'',fontStyle:'',fontWeight:''},
    "right": "3%",
    "textAlign": "right"
 },
 "#win_firstStart_countryList": {
    "left": "0.00%",
    "top": "0%",
    "height": "100%",
    "width": "100.00%",
    "backgroundColor": "#ffffff",
 }

countryList.js

var countrySection = Ti.UI.createListSection({});
var items = [];
var db = Ti.Database.open(DB_NAME);
var query = db.execute("SELECT country_code, country_name, country_prefix from countries");
while (query.isValidRow()) {
    items.push({
        countryName: { text: query.fieldByName('country_name') },
        countryPrefix: { text: "+ " + query.fieldByName('country_prefix') },
        properties: {
                title: query.fieldByName('country_name'),
                itemId: query.fieldByName('country_code'),  
                searchableText: query.fieldByName('country_name'),
                caseInsensitiveSearch: true
            }
    });
    query.next();
}
query.close();
db.close();

countrySection.setItems(items);
$.ListView_prefixes.sections = [countrySection];
$.ListView_prefixes.searchView = $.searchBar_countries;

$.searchBar_countries.addEventListener('change', function(e){
     $.ListView_prefixes.searchText = e.value;
});

Имате ли идея защо не мога да виждам countryName и countryPrefix в моите ListItems само в устройства с Android?


person 70ny    schedule 02.08.2016    source източник


Отговори (1)


Разбрах къде е проблема. Мисля, че е грешка на Appcelerator Studio. Когато зададете свойството "bindId", не можете да зададете в .tss файла, но трябва да зададете директно в елемента ItemTemplate. В моя случай го направих

<Label id="label_countryName"/>
<Label id="label_countryPrefix"/>

Вместо това, за да го оставя да работи, трябваше да напиша следния код:

<Label bindId="countryName" id="label_countryName"/>
<Label bindId="countryPrefix" id="label_countryPrefix"/>
person 70ny    schedule 02.08.2016