1

我正在尝试做这样的事情:

网格视图

问题:该项目是根据 React Native Docsimmutablejs构建的,我无法使用,因此我无法使用该组件的 numColumns props 功能。AFAIK,我唯一的选择是使用文档指出的 VirtualizedList,但我不知道如何将单元格显示为如上所示的网格。FlatList

我已经尝试style在单元格和视图包装器中添加道具,但没有任何用于对齐单元格的代码(如我发布的图片)被忽略。事实上,当我ScrollView使用VirtualizedList.

有什么帮助吗?任何事情都会受到欢迎,我已经在谷歌上挖掘了很多,但我找不到任何关于这个的东西。

一些示例代码:

      <View>
        <VirtualizedList
          data={props.schedules}
          getItem={(data, index) => data.get(index)}
          getItemCount={(data) => data.size}
          keyExtractor={(item, index) => index.toString()}
          CellRendererComponent={({children, item}) => {
            return (
              <View style={{any flexbox code gets ignored here}}>
                {children}
              </View>
            )}}
          renderItem={({ item, index }) => (
            <Text style={{also here}} key={index}>{item.get('schedule')}</Text>
          )}
        />
      </View>
4

1 回答 1

3

回答我自己的问题:我通过从react-nativerepo 复制 FlatList.js 源代码使其工作。这是一个示例代码:

<VirtualizedList
  data={props.schedules}
  getItem={(data, index) => {
    let items = []
    for (let i = 0; i < 4; i++) {
      const item = data.get(index * 4 + i)
      item && items.push(item)
    }
    return items
  }}
  getItemCount={(data) => data.size}
  keyExtractor={(item, index) => index.toString()}
  renderItem={({item, index}) => {
    return (
      <View key={index} style={{flexDirection: 'row'}}>
        {item.map((elem, i) => (
          <View key={i}>
            <Text key={i}>{elem.get('horario')}</Text>
          </View>
        ))}
      </View>
    )
  }}
/>

数字4是列数。关键部分在组件中getItem和添加flexDirection: 'row'处。renderItemView

于 2018-05-25T18:21:51.687 回答