React NativeReact NativeReact Native实践

React Native学习ListView(三):吸顶效果

2016-10-12  本文已影响2987人  BlainPeng

Demo展示

ios.gif

之前两篇文章ListView的学习都是展示了每一row的数据,而上面的效果图中不仅展示了row数据,而且还带有一个section header,当滑动时,这个section header会固定在头部,也就是吸顶效果。但是遗憾的是,在Android平台上不支持吸顶效果,如下图:

android.gif

Demo知识点

那如何来实现它了?我们都知道,在只简单地渲染每一行数据时,我们获取数据源时用ListView对象的cloneWithRows方法来获取的,而想要实现这种吸顶效果的话,需要使用 cloneWithRowsAndSections 方法。这个方法需要传入三个参数:

dataBlob        object类型
sectionIDs      array娄型
rowIDs          array类型

它是一种数据结构,包含ListView所需的所有数据(section header 和 rows),如下图:

dataBlob.png

<font color=#ff0000 size=5 face="黑体">dataBlob 的 key 值包含 sectionID + rowId</font>,我们可以通过getSectionData 和 getRowData 来渲染每一行数据。

sectionIDs 用于标识每组section,如下图:

sectionIDs.png

rowIDs 用于描述每个 section 里的每行数据的位置及是否需要渲染。在ListView渲染时,会先遍历 rowIDs 获取到对应的 dataBlob 数据。

rowIDs.png

Demo实现

这里的'cars'和'title'属于data数据的一组,也就是我们上面讲的一组section数据,而它的sectionId就是0,因为是数组的第一个元素。然后title属于sectionHeader,而cars就是我们的row数据,而它的rowsId分别为:0~3

好了。ListView吸顶效果的学习就完成了。完整代码

参考资料

http://moduscreate.com/react-native-listview-with-section-headers/

上一篇下一篇

猜你喜欢

热点阅读