ReactNative之ListView学习总结(二)带有section的demo
来源:互联网 发布:电音大神 知乎 编辑:程序博客网 时间:2024/05/20 15:39
import React, { Component } from 'react';
import {
AppRegistry,
StyleSheet,
Text,
View,
ListView,
} from 'react-native';
export default class SectionListViewDemo extends Component {
constructor(props){
super(props)
//创建datasource对象,提供row的更新策略
var ds = new ListView.DataSource({
rowHasChanged:(r1, r2) => r1 !== r2,
//这里指出了更新section的规则
sectionHeaderHasChanged: (s1, s2) => s1 !== s2
})
//厨师湖state的时候,初始化一个dagasource和一个data属性,后面构建listview的时候需要用到。
this.state = {
dataSource: ds,
//这里使用了字典的方式,那么会自动将字典的key作为section 的部分显示出来
data: {a:['h','m'], b:['l', 'f'], c:['c', 'd'], d:['l', 'i'], e:['o','h']}
}
}
_renderRow(rowData, rowId, sectionId) {
return (
<Text>{rowData + ' ' + rowId + ' ' + sectionId}</Text>
);
}
//然后在render方法里面构建listview
render() {
return (
<View style={{flex: 1}}>
<ListView
//设置datasource
dataSource = {this.state.dataSource.cloneWithRowsAndSections(this.state.data)}
//注意, renderRow方法默人按照顺序有如下几个参数 (rowData, sectionID, rowID, highlightRow),可以做实验,即便传递的参数顺序颠倒,但是还是会按照自有的顺序来实现
renderRow = {(rowData, sectionId, rowId) => this._renderRow( rowData, sectionId, rowId)}
/>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
import {
AppRegistry,
StyleSheet,
Text,
View,
ListView,
} from 'react-native';
export default class SectionListViewDemo extends Component {
constructor(props){
super(props)
//创建datasource对象,提供row的更新策略
var ds = new ListView.DataSource({
rowHasChanged:(r1, r2) => r1 !== r2,
//这里指出了更新section的规则
sectionHeaderHasChanged: (s1, s2) => s1 !== s2
})
//厨师湖state的时候,初始化一个dagasource和一个data属性,后面构建listview的时候需要用到。
this.state = {
dataSource: ds,
//这里使用了字典的方式,那么会自动将字典的key作为section 的部分显示出来
data: {a:['h','m'], b:['l', 'f'], c:['c', 'd'], d:['l', 'i'], e:['o','h']}
}
}
_renderRow(rowData, rowId, sectionId) {
return (
<Text>{rowData + ' ' + rowId + ' ' + sectionId}</Text>
);
}
//然后在render方法里面构建listview
render() {
return (
<View style={{flex: 1}}>
<ListView
//设置datasource
dataSource = {this.state.dataSource.cloneWithRowsAndSections(this.state.data)}
//注意, renderRow方法默人按照顺序有如下几个参数 (rowData, sectionID, rowID, highlightRow),可以做实验,即便传递的参数顺序颠倒,但是还是会按照自有的顺序来实现
renderRow = {(rowData, sectionId, rowId) => this._renderRow( rowData, sectionId, rowId)}
/>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
});
从下图中可以看到不同的数据被正确划分到了不同的section下
0 0
- ReactNative之ListView学习总结(二)带有section的demo
- ReactNative之ListView学习总结(一)简单demo
- ReactNative之ListView学习总结(四)listview 属性
- ReactNative之ListView学习总结(三)datasource 属性
- 基于Redux的ReactNative项目开发总结(二)
- ReactNative之ListView
- ReactNative的ListView简述
- AndEngine之DEMO学习(二)RectangleExample
- ReactNative学习二
- ReactNative Demo - Dimensions 的使用
- 一个简单的ReactNative demo
- 【Windows核心编程学习笔记】用户模式下的线程同步之二---关键段(critical section)
- Android研究院之ListView原理学习与优化总结(二十一)
- Android研究院之ListView原理学习与优化总结(二十一)
- 带有ListView的Dialog
- ReactNative学习之Props(属性)
- ReactNative的分组ListView-----SectionList
- ACM Steps之二 (Section One)
- 【javaWeb】HttpServletRequest常用获取URL的方法
- FluentData
- 并行、并发、synchonrized同步的用法
- javascript时间戳和日期字符串相互转换
- Oracle创建表空间
- ReactNative之ListView学习总结(二)带有section的demo
- OpenGL(十) 手机不可用特性 ComputeShader GeometryShader ...
- Android 原生控件 2 Switch 和 TogglBUtton
- POJ-2373-Dividing the Path
- 修改SVN已提交项目的消息日志
- Android 点击View外部消失
- android 获取app使用的CPU
- 关于PHP内部编码与mysql字符差异问题的研究
- 收藏的博客地址