У меня есть ListView, но мне нужно добавить ячейки в каждый ListItem, я никогда не знаю, сколько ячеек мне нужно добавить, это возможно?Добавить контроллеры в шаблон ListView
Я не могу добавлять представления к элементу ListItem внутри шаблона, у меня id и bindId равно «строке» элемента ListItem.
Единственное другое решение, о котором я могу думать, это иметь 12 ячеек и скрыть те, которые мне не нужны.
//widget.xml
<Alloy>
<View id="widget">
<ListView id="list" defaultItemTemplate="list">
<Templates>
<ItemTemplate name="list" bindId="row" id="row"/>
</Templates>
<ListSection/>
</ListView>
</View>
</Alloy>
Я массив с bindId, чтобы добавить к каждой ячейке:
//cell.js
$.title.bindId = args.cell;
//cell.xml
<Alloy>
<View id="cell">
<Label id="title"/>
</View>
</Alloy>
Я 12 ячеек, с шириной набора равен 0, и я устанавливаю только ширину на столбцы, которые я использую, остальные остаются скрытыми. Это мой фактический файл:
<ListView id="list" defaultItemTemplate="item">
<Templates>
<ItemTemplate name="item" class="item" id="item" bindId="item">
<View id="row" bindId="row">
<View class="cell" bindId="cell1" id="cell1">
<View class="border left"/>
<Label class="title" bindId="title1" id="title1"/>
<View class="border right"/>
<View class="line"/>
</View>
....
<View class="cell" bindId="cell12" id="cell12">
<View class="border left"/>
<Label class="title" bindId="title12" id="title12"/>
<View class="border right"/>
<View class="line"/>
</View>
</View>
</ItemTemplate>
</Templates>
<ListSection/>
</ListView>
Это часть моего контроллера:
data.items = [];
for(var i = 0; i < 100; i++) if(data.list[i]) {
var row = {
properties:{
searchableText:''
}
};
for(var c in args.columns) {
row.properties.searchableText += data.list[i][args.columns[c].alias]+' ';
row['cell'+parseInt(parseInt(c)+1)] = {
width:data.width
};
row['title'+parseInt(parseInt(c)+1)] = {
text:data.list[i][args.columns[c].alias]
};
}
data.items.push(row);
};
$.list.sections[0].setItems(data.items);
Спасибо, еще один вопрос, о макете сетки, есть способ сделать это в сплаве? ListView повернул -90º градусов? Чтобы проверить, могу ли я найти способ обхода решения: https://stackoverflow.com/questions/35433035/tableview-content-hidden-on-rows-that-are-not-screen-visible-android –
Другая память/производительность сомните, какой лучший метод: 1) 1 шаблон с 12 столбцами; 2) 12 шаблонов с правильным количеством столбцов для каждого из них? –
Тебе придется протестировать, но я думаю, что 12 шаблонов будут работать лучше, особенно если у вас много строк. –