0

Ich entwickle eine App mit Appcelerator-Framework (mit Appcelerator Studio), aber ich habe ein Problem ohne eine Lösung (noch) aufgetreten.Appcelerator - ListView Fehler (nur in Android)

ich in der Welt und den damit verbundenen Telefon-Vorwahl eine Liste mit allen Ländern erschaffe, das heißt „USA +1“, „United Kingdom +44“ und so weiter. Ich benutze einen ListView, da der Benutzer einen wählen muss. Auf iOS funktioniert alles super, aber wenn ich die App in meinem Android-Gerät betreibe, sind die ListItems alle Geschenke, aber nicht deren Text. Was ich meine ist, dass ich in iOS alle Länder und ihren entsprechenden Namen in jeder Zeile sehe. In Android sehe ich, dass es mehr als 150 Zeilen in meinem ListView gibt, ich kann auf diese Zeilen klicken, die Anwendung wird das entsprechende Land auswählen, aber Ich sehe den gedruckten Text in den Zeilen nicht.

Ich verwende eine ItemTemplate, und dann schaffe ich (mit Javascript) ein ListSection, auf die ich die Elemente hinzuzufügen (sie dynamisch mit der bindId Eigenschaft hinzufügen).

Ich habe gesehen, dass andere Anwendungen mit Appcelerator dieses Problem nicht haben, also versuche ich herauszufinden, wo ich falsch liege.

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

Do Sie haben eine Idee darüber, warum ich die countryName und countryPrefix in meinem ListItems nur in AndDroid-Geräten nicht sehen kann?

Antwort

0

Ich habe herausgefunden, wo das Problem liegt. Ich denke, ein Fehler von Appcelerator Studio. Wenn Sie die Eigenschaft "bindId" festlegen, können Sie nicht in der .tss-Datei festlegen, sondern Sie müssen direkt im ItemTemplate-Element festlegen. In meinem Fall habe ich

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

statt, um sie arbeiten zu lassen, ich sollte den folgenden Code haben, schreiben:

<Label bindId="countryName" id="label_countryName"/> 
<Label bindId="countryPrefix" id="label_countryPrefix"/>