Я создаю список в виде плоского списка и пытаюсь создать несколько липких заголовков. Но пока он показывает весь блок как липкий.
Это код, который я использую:
renderRow({item, index}) {
let items = [];
if( item.subitems) {
items = item.subitems.map(row => {
return (
<View style={styles.wrapper}>
<View style={styles.blocks}>
<Text>{row.time}</Text>
</View>
<View style={styles.blocks}>
<Text>{row.person1}</Text>
</View>
<View style={styles.blocks}>
<Text>{row.person2}</Text>
</View>
</View>
)
})
}
return (
<View>
<ListItem itemDivider>
<Text style={{ fontWeight: "bold", textTransform: 'capitalize' }}>
{item.date}
</Text>
</ListItem>
{items}
</View>
)
}
render() {
return (
<OptimizedFlatList
ref={(c) => this.list = c}
data={this.state.dataSource}
renderItem={this.renderRow.bind(this)}
keyExtractor={(item, index) => index}
removeClippedSubviews={Platform.OS === 'ios' ? false : true}
stickyHeaderIndices={[0]}
/>
)
}
Массив, который я использую, выглядит так:
[{
date: 'Tuesday May 12,
header: true,
subitems: [{
0: {
time: '',
person1: 'Person 1',
person2: 'Person 2'
}
1: {
time: '00:00 till 01:00',
person1: 'Name 1',
person2: 'Name 2'
}
2: {
time: '01:00 till 02:00',
person1: 'Another Name 1',
person2: 'Another Name 2'
}
}]
}]
Итак, если я использую: stickyHeaderIndices={[0]}
, он устанавливает липкость всей строки, но должен устанавливать только часть даты как липкую (у меня несколько дат, поэтому все они должны быть липкими).
Я знаю, что это необходимо в renderRow также отображает подэлементы, но я не знаю, как это исправить.