使 VirtualizedList 显示为网格

bet*_*res 2 react-native react-native-flatlist react-native-sectionlist

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

网格视图

问题:该项目是根据 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>
Run Code Online (Sandbox Code Playgroud)

bet*_*res 5

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

<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>
    )
  }}
/>
Run Code Online (Sandbox Code Playgroud)

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