具有交替颜色的Listview反应原生

时间:2016-03-21 09:29:14

标签: react-native react-native-listview

我有一些对象,如下例所示;

[{
        "id" : 13100,
        "key" : "Emlak Vergisi",
        "y" : 135638.98
    }, {
        "id" : 13154,
        "key" : "Çevre Temizlik ",
        "y" : 956.17
    }, {
        "id" : 19998,
        "key" : "Genel Tahakkuk",
        "y" : 89030.62
    }, {
        "id" : 24998,
        "key" : "Gecekondu ve So",
        "y" : 42721.07
    }, {
        "id" : 60000,
        "key" : "Ortak Gelirler",
        "y" : 827.42
    }
]

是否可以为每个项目设置一个交替颜色的列表视图?

4 个答案:

答案 0 :(得分:8)

我想说这种方法更清洁:

 renderRow(rowData, sectionID, rowID) {

   let style = [
         styles.row, 
         {'backgroundColor': colors[rowID % colors.length]}
       ];

   return (<View style={style}/>);
 }

 let colors = ['#123456', '#654321', '#fdecba', '#abcdef'];

 let styles = StyleSheet.create({
       row: {
            // .. rows style
       }
 });

通过这种方式,您可以轻松地为列表中的每一行添加一个特殊颜色(不仅仅是偶数/奇数类型)

答案 1 :(得分:5)

在renderRow中是,根据rowID或rowData等应用不同的样式

例如:

renderRow(rowData, sectionID, rowID, highlightRow) {
    if(rowID%2 === 0) {
        return (<View style={{backgroundColor: 'blue'}}/>);
    }
    return (<View style={{backgroundColor: 'red'}}/>);
}

答案 2 :(得分:4)

您可以使用renderRow函数中提供的rowId。我已经设置了一个工作示例here

渲染行方法:

  renderRow = (rowData, sectionId, rowId) => {
    if (rowId % 2) {
      return (
        <View style={{backgroundColor: 'red'}}>
          <Text>{rowData.id}</Text>
        </View>
      );
    } else {
      return (
        <View style={{backgroundColor: 'blue'}}>
          <Text>{rowData.id}</Text>
        </View>
      );
    }
  };

答案 3 :(得分:1)

    (Provided Array).map((array, index) => {
        return (
            <View style={{ backgroundColor: (index % 2 == 0) ? '#ecf0f1' : '#fff' }}>
                <Text>{array.key}</Text>
            </View>
        )
    })