Please enable JavaScript.
Coggle requires JavaScript to display documents.
listview (特点 (ListView组件用于显示一个垂直的滚动列表,其中的元素之间结构近似 而仅数据不同。,…
listview
-
ListView组件必须的两个属性
dataSource
-
属性值
ListView.DataSource对象
定义
ListViewDataSource为ListView组件提供高性能的数据处理和访问。我们需要调用方法从原始输入数据中抽取数据来创建ListViewDataSource对象,并用其进行数据变更的比较。原始输入数据可以是简单的字符串数组,也可以是复杂嵌套的对象——分不同区(section)各自包含若干行(row)数据。
constructor
基本写法:var ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
可以接收4个参数
getRowData(dataBlob, sectionID, rowID):表明我们将以何种方式从dataBlob(数据源)中提取出rowData,sectionID用于指定每一个section的标题名(在renderRow,renderHeader等方法中会默认拆开并作为参数传入)
getSectionHeaderData(dataBlob, sectionID):表明我们将以何种方式从dataBlob(数据源)中提取出HeaderData。HeaderData用于给每一个sectionHeader赋值
rowHasChanged(prevRowData, nextRowData):指定我们更新row的策略,一般来说都是prevRowData和nextRowData不相等时更新row
sectionHeaderHasChanged(prevSectionData, nextSectionData):指定我们更新sectionHeader的策略,一般如果用到sectionData的时候才指定
两种向listView里填充数据的方法
cloneWithRows
定义
cloneWithRows(dataBlob, rowIdentities)
该方法接收两个参数,dataBlob是原始数据源。在没有section的时候使用此方法,传入一个数组。rowIdentities为可选类型,为数据源的每一项指明一个id。默认的id为字符串'0','1','2'...dataBlob.count。
cloneWithRowsAndSections
cloneWithRowsAndSections(dataBlob, sectionIdentities, rowIdentities)
此方法作用基本等同cloneWithRows,区别在于可以额外指定sectionIdentities 。如果你不需要section,则直接使用cloneWithRows即可。
sectionIdentities同理是包含了section标识符的数组。例如['s1', 's2', ...]。如果没有指定此数组,则默认取section的key。
renderRow
-
属性值
-
(rowData,sectionId,rowID) => <View></View>
rowData(从数据源中解析出来的数据)
sectionId(分区,这在使用键值对的对象时,会将键设置为这个参数)
rowID(默认的自增长id)