0

我有一個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); 

回答

1

我認爲你在尋找什麼是iOS或網格佈局Android的一個UICollectionView。您可以使用馬塞爾的模塊中鈦使用此:

https://github.com/mpociot/TiCollectionView

如果你真的必須使用ListView,然後是的,我想你想出了幾乎是唯一的出路。

+0

謝謝,關於網格佈局的另外一個問題,有一種方法可以在Alloy中做到這一點? ListView旋轉-90º度?檢查是否可以找出解決方法:https://stackoverflow.com/questions/35433035/tableview-content-hidden-on-rows-that-are-not-screen-visible-android –

+0

另一個內存/性能懷疑,最好的方法是什麼:1)有12列的1個模板; 2)每個模板有12個正確的列數? –

+0

你必須測試,但我認爲12個模板會更好,尤其是如果你有很多行。 –

相關問題