SectionList的使用
这个是效果:

第一步:准备数据源:Car.json
{"data": [
{
"cars": [
{
"icon": "m_180_100.png",
"name": "AC Schnitzer"
},
{
"icon": "m_92_100.png",
"name": "阿尔法·罗密欧"
},
{
"icon": "m_9_100.png",
"name": "奥迪"
},
{
"icon": "m_97_100.png",
"name": "阿斯顿·马丁"
}
],
"title": "A"
}........
}
第二步:
import React, {Component} from 'react';
import {
AppRegistry,
StyleSheet,
Text,
View,
SectionList,
Dimensions,
Image
} from 'react-native';
const dimension = Dimensions.get('window')
var Car = require('./Car.json');
var itemWidth = 100;
var cols = 3;
var cMargin = (dimension.width - (itemWidth * cols)) / 4.0;
var rMargin = 12;
export default class SectionListView1 extends Component {
componentDidMount() {
}
_renderSectionHeader(info) {
return (
<View>
<Text key={info.section.key} style={styles.sectionStyle}>
{info.section.title}
</Text>
</View>
)
}
_renderItem(info) {
return (
<View style={styles.cellStyle}>
<Image source={{uri: info.item.icon}} style={styles.imageStyle}/>
<Text>
{info.item.name}
</Text>
</View>
)
}
_separatorCom() {
return (
<View style={{height: 4, width: 500, backgroundColor: 'orange'}}>
</View>
)
}
render() {
var dataSource = [];
for (var i = 0; i < Car.data.length; i++) {
let datas = [];
for (var j = 0; j < Car.data[i].cars.length; j++) {
datas.push(Car.data[i].cars[j]);
}
dataSource.push({key: i, data: datas, title: Car.data[i].title});
}
return (
<View style={styles.container}>
<SectionList
renderSectionHeader={this._renderSectionHeader}
renderItem={this._renderItem}
sections={dataSource}
// refreshing={false}
// onRefresh={()=>{alert("刷新")}}
// ItemSeparatorComponent={this._separatorCom}
// SectionSeparatorComponent={() => <View style={{height: 20, backgroundColor: 'blue'}}></View>}
keyExtractor={(item, index) => ("index" + index + item)}
// onEndReached={(info)=>{alert("到达底部")}}
// onEndReachedThreshold={0}
// stickySectionHeadersEnabled={true}
ListHeaderComponent={() => <View
style={{backgroundColor: 'yellow', alignItems: 'center',justifyContent: 'center',width:dimension.width,height:50}}><Text>这个是我的表头</Text></View>}
ListFooterComponent={() => <View
style={{backgroundColor: 'red', alignItems: 'center',width:dimension.width}}><Text>这个是我的表尾</Text></View>}
contentContainerStyle={styles.sectionListStyle}//设置cell的样式
pageSize={4}
/>
</View>
);
}
}
const styles = StyleSheet.create({
sectionListStyle: {
flexDirection: 'row',
flexWrap: 'wrap',
alignItems: 'flex-start',
backgroundColor: '#dd6ddd',
},
sectionStyle: {
width: dimension.width,
padding: 12,
backgroundColor: '#21c6cd',
color: '#fff'
},
cellStyle: {
alignItems: 'center',
borderRadius: 5,
borderWidth: 1,
borderColor: '#ff496b',
marginLeft: cMargin,
marginTop:rMargin,
marginBottom:rMargin,
padding: 6,
width:itemWidth
},
imageStyle: {
width: 70,
height: 70
}
})
;
module.exports = SectionListView1;
如果大家把上面描述的的SectionList的下面两句代码删除,则会出现单行情况,如果有兴趣,自行调试
contentContainerStyle={styles.sectionListStyle}//设置cell的样式
pageSize={4}
renderItem:定义每个元素组件的渲染方式,默认传入参数rowData,要访问其中的"title"可以通过rowData.item.title访问到。
ItemSeparatorComponent:定义每个元素之间分割组件
ListHeaderComponent:定义头部组件
ListFooterComponent:定义底部组件
ListEmptyComponent:data为空时显示的组件
columnWrapperStyle:定义每个组件栏的包裹样式,不支持单行组件
numColumns:number,定义每行显示的元素个数
refreshControl:定义头部刷新组件,例如:
refreshControl={ //下拉刷新组件
<RefreshControl
refreshing={this.state.refreshing} //通过bool值refreshing控制是否刷新
onRefresh={this._onRefresh.bind(this)} //刷新时需要执行的函数
/>
}
onEndReached:在列表滚动到底部一定距离时调用这个函数,一般在此定义滚动到底部时加载新的数据。
onEndReachedThreshold:决定当距离内容最底部还有多远时触发onEndReached回调。注意此参数是一个比值而非像素单位。比如,0.5表示距离内容最底部的距离为当前列表可见长度的一半时触发。
SectionList的使用的更多相关文章
- 史上最易懂——ReactNative分组列表SectionList使用详情及示例详解
React Native系列 <逻辑性最强的React Native环境搭建与调试> <ReactNative开发工具有这一篇足矣> <解决React Native un ...
- React native 中 SectionList用法
一.代码 import React, { Component } from 'react'; import { AppRegistry, View, Text, SectionList, } from ...
- React-Native新列表组件FlatList和SectionList学习 | | 联动列表实现
React-Native在0.43推出了两款新的列表组件:FlatList(高性能的简单列表组件)和SectionList(高性能的分组列表组件). 从官方上它们都支持常用的以下功能: 完全跨平台. ...
- react native 踩坑之 SectionList state更新 不执行render重新渲染页面
官方文档中指出 SectionList 本组件继承自PureComponent而非通常的Component,这意味着如果其props在浅比较中是相等的,则不会重新渲染.所以请先检查你的renderIt ...
- [RN] React Native 下列表 FlatList 和 SectionList
1.FlatList FlatList组件用于显示一个垂直的滚动列表,其中的元素之间结构近似而仅数据不同. FlatList更适于长列表数据,且元素个数可以增删.和ScrollView不同的是,Fla ...
- React Native 之SectionList
接上一篇: /pages/SectionListDemo.js import React, {Fragment,Component} from 'react'; import { SafeAreaVi ...
- SectionIndexer示例
This small tutorial will show you how to create a ListView, enable fast scrolling, and create a alph ...
- Rafy 中的 Linq 查询支持(根据聚合子条件查询聚合父)
为了提高开发者的易用性,Rafy 领域实体框架在很早开始就已经支持使用 Linq 语法来查询实体了.但是只支持了一些简单的.常用的条件查询,支持的力度很有限.特别是遇到对聚合对象的查询时,就不能再使用 ...
- C#读取ini文件的方法
最近项目用到ini文件,读取ini文件,方法如下: using System; using System.Collections.Generic; using System.Linq; using S ...
随机推荐
- Orchard CMS -Migration文件更新后数据库不更新的问题 new properties not updating after migrationData migration is not working?
Orchard CMS - new properties not updating after migrationData migration is not working? If your mapp ...
- Turning off “Language Service Disabled” error message in VS2017
We are getting the following "Error" message in our MVC web application in Visual studio 2 ...
- python模块和类的通用转换规则(2),三步转oo
介绍模块和类怎么互相转换,不谈面向对象的继承 封装 多态等特点. 一个person_module模块,有人的基本属性和功能. person_module.py如下 # coding=utf8 name ...
- 11代理模式Proxy
一.什么是代理模式 Proxy模式又叫做代理模式,是构造型的设计 模式之一,它可以为其他对象提供一种代理(Proxy)以 控制对这个对象的访问. 所谓代理,是指具有与代理元(被代理的对象)具有 相同的 ...
- css3整理--background-size
background-size语法: /*Mozilla*/ -moz-background-size: auto || <length> || <percentage> || ...
- 【CF679D】Bear and Chase 最短路+乱搞
[CF679D]Bear and Chase 题意:近日,鼠国的头号通缉犯,神出鬼没的怪盗——Joker正于摩登市出没!对于名侦探Jack来说,这正是将其捉拿归案的大号时机.形式化地,摩登市可以看成一 ...
- ssh 管理 linux登录远程服务器
使用 ssh 免秘登录方式 客户端:1. 生成公钥和私钥 ssh-keygen 一般不需要对私钥设置口令(passphrase),如果担心私钥的安全,这里可以设置一个. 运行结束以后,在$HOME/. ...
- 带分数|2013年蓝桥杯B组题解析第九题-fishers
带分数 100 可以表示为带分数的形式:100 = 3 + 69258 / 714 还可以表示为:100 = 82 + 3546 / 197 注意特征:带分数中,数字1~9分别出现且只出现一次(不包含 ...
- TOP100summit:【分享实录-美团点评】 业务快速升级发展背后的系统架构演进
本篇文章内容来自2016年TOP100summit美团●大众点评高级技术专家,酒店后台研发组eHome团队负责人许关飞的案例分享.编辑:Cynthia 许关飞:美团●大众点评高级技术专家,酒店后台研发 ...
- [No000011E]Python教程1/9-Python简介
Python是一种计算机程序设计语言.你可能已经听说过很多种流行的编程语言,比如非常难学的C语言,非常流行的Java语言,适合初学者的Basic语言,适合网页编程的JavaScript语言等等. 那P ...