React Native 之FlatList 下拉刷新和上拉加载更多
接上一篇代码: 只修改了FlatListDemo.js里面的代码
import React, {Fragment,Component} from 'react';
import {
SafeAreaView,
StyleSheet,
ScrollView,
View,
Text,
StatusBar,
FlatList,
RefreshControl,
ActivityIndicator,
ListFooterComponent,
} from 'react-native';
const CITY_NAME = ['北京','上海','广州','武汉','杭州','三亚','宁波','杭州','合肥','芜湖','福州','厦门','温州'];
export default class MyPointPage extends Component {
constructor(props){
super(props);
this.state={
isLoading:false,
dataArray: CITY_NAME
}
}
loadData(refreshing){
console.log('loadData=========')
if (refreshing) {
this.setState({
isLoading:true
});
}
setTimeout(()=>{
let dataArray = [];
if (refreshing) {
for(let i = this.state.dataArray.length-;i>=;i--){
dataArray.push(this.state.dataArray[i]);
}
}
else {
dataArray=this.state.dataArray.concat(CITY_NAME);
}
this.setState({
dataArray:dataArray,
isLoading:false
})
},);
}
genIndicator(){
return <View style={styles.indicatorContainer}>
<ActivityIndicator
style={styles.indicator}
size={'large'}
animating={true}
/>
<Text>正在加载更多</Text>
</View>
}
_renderItem(data){
return <View style={styles.item}>
<Text style={styles.text}>{data.item}</Text>
</View>
}
render(){
return (
<View>
<FlatList
data={this.state.dataArray}
renderItem={(data)=>this._renderItem(data)}
// refreshing={this.state.isLoading}
// onRefresh={()=>{
// this.loadData();
// }}
//要定制刷新外观不能用上面这个,要用下面这个
refreshControl = {
<RefreshControl
title={'加载中...'}
colors={['red']}//此颜色无效
tintColor={'orange'}
titleColor={'red'}//只有ios有效
refreshing={this.state.isLoading}
onRefresh={()=>{
this.loadData(true);
}}
/>
}
ListFooterComponent={()=>this.genIndicator()}//上拉加载更多视图
onEndReached={()=>{
this.loadData()
}}
onEndReachedThreshold={0.1} // 这个属性的意思是 当滑动到距离列表内容底部不足 0.1*列表内容高度时触发onEndReached函数 为啥要加这个属性 因为不加的话滑动一点点就会立即触发onReached函数,看不到菊花加载中
/>
</View>
);
}
}
const styles = StyleSheet.create({
container:{
flex:,
alignItems:'center',
backgroundColor: '#F5FCFF'
},
item:{
backgroundColor: '#168',
height:,
marginRight:,
marginLeft:,
marginBottom:,
alignItems:'center',
//justifyContetnt:'center',
},
text:{
color:'white',
fontSize:,
},
indicatorContainer:{
alignItems:'center'
},
indicator:{
color:'red',
margin:
}
})
import React, {Fragment,Component} from 'react';
import {
SafeAreaView,
StyleSheet,
ScrollView,
View,
Text,
StatusBar,
FlatList,
RefreshControl,
ActivityIndicator,
ListFooterComponent,
} from 'react-native';
const CITY_NAME = ['北京','上海','广州','武汉','杭州','三亚','宁波','杭州','合肥','芜湖','福州','厦门','温州'];
export default class FlatListDemo extends Component {
constructor(props){
super(props);
this.state={
isLoading:false,
dataArray: CITY_NAME
}
}
loadData(refreshing){
if (refreshing) {
this.setState({
isLoading:true
});
}
setTimeout(()=>{
let dataArray = [];
if (refreshing) {
for(let i = this.state.dataArray.length-1;i>=0;i--){
dataArray.push(this.state.dataArray[i]);
}
}
else {
dataArray=this.state.dataArray.concat(CITY_NAME);
}
this.setState({
dataArray:dataArray,
isLoading:false
})
},2000);
}
genIndicator(){
return <View style={styles.indicatorContainer}>
<ActivityIndicator
style={styles.indicator}
size={'large'}
animating={true}
/>
<Text>正在加载更多</Text>
</View>
}
_renderItem(data){
return <View style={styles.item}>
<Text style={styles.text}>{data.item}</Text>
</View>
}
render(){
return (
<View>
<FlatList
data={this.state.dataArray}
renderItem={(data)=>this._renderItem(data)}
// refreshing={this.state.isLoading}
// onRefresh={()=>{
// this.loadData();
// }}
//要定制刷新外观不能用上面这个,要用下面这个
refreshControl = {
<RefreshControl
title={'加载中...'}
colors={['red']}//此颜色无效
tintColor={'orange'}
titleColor={'red'}//只有ios有效
refreshing={this.state.isLoading}
onRefresh={()=>{
this.loadData(true);
}}
/>
}
ListFooterComponent={()=>this.genIndicator()}//上拉加载更多视图
onEndReached={()=>{
this.loadData()
}}
/>
</View>
);
}
}
const styles = StyleSheet.create({
container:{
flex:1,
alignItems:'center',
backgroundColor: '#F5FCFF'
},
item:{
backgroundColor: '#168',
height:200,
marginRight:15,
marginLeft:15,
marginBottom:15,
alignItems:'center',
//justifyContetnt:'center',
},
text:{
color:'white',
fontSize:20,
},
indicatorContainer:{
alignItems:'center'
},
indicator:{
color:'red',
margin:10
}
})
效果图:

React Native 之FlatList 下拉刷新和上拉加载更多的更多相关文章
- juery下拉刷新,div加载更多元素并添加点击事件(二)
buffer.append("<div class='col-xs-3 "+companyId+"' style='padding-left: 10px; padd ...
- android--------自定义控件ListView实现下拉刷新和上拉加载
开发项目过程中基本都会用到listView的下拉刷新和上滑加载更多,为了方便重写的ListView来实现下拉刷新,同时添加了上拉自动加载更多的功能. Android下拉刷新可以分为两种情况: 1.获取 ...
- Android 自定义 ListView 上下拉动“刷新最新”和“加载更多”歌曲列表
本文内容 环境 测试数据 项目结构 演示 参考资料 本文演示,上拉刷新最新的歌曲列表,和下拉加载更多的歌曲列表.所谓"刷新最新"和"加载更多"是指日期.演示代码 ...
- Android 5.X新特性之为RecyclerView添加下拉刷新和上拉加载及SwipeRefreshLayout实现原理
RecyclerView已经写过两篇文章了,分别是Android 5.X新特性之RecyclerView基本解析及无限复用 和 Android 5.X新特性之为RecyclerView添加Header ...
- iscroll.js 下拉刷新和上拉加载
html代码如下 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> < ...
- IOS 开发下拉刷新和上拉加载更多
IOS 开发下拉刷新和上拉加载更多 简介 1.常用的下拉刷新的实现方式 (1)UIRefreshControl (2)EGOTTableViewrefresh (3)AH3DPullRefresh ( ...
- IOS UITableView下拉刷新和上拉加载功能的实现
在IOS开发中UITableView是非常常用的一个功能,而在使用UITableView的时候我们经常要用到下拉刷新和上拉加载的功能,今天花时间实现了简单的UITableView的下拉刷新和上拉加载功 ...
- Android 使用PullToRefresh实现下拉刷新和上拉加载(ExpandableListView)
PullToRefresh是一套实现非常好的下拉刷新库,它支持: 1.ListView 2.ExpandableListView 3.GridView 4.WebView 等多种常用的需要刷新的Vie ...
- 使用PullToRefresh实现下拉刷新和上拉加载
使用PullToRefresh实现下拉刷新和上拉加载 分类: Android2013-12-20 15:51 78158人阅读 评论(91) 收藏 举报 Android下拉刷新上拉加载PullToRe ...
- 下拉刷新和上拉加载 Swift
转载自:http://iyiming.me/blog/2015/07/05/custom-refresh-and-loading/ 关于下拉刷新和上拉加载,项目中一直使用MJRefresh(原先还用过 ...
随机推荐
- 理解ES6中的Iterator
一.为什么使用Iterator 我们知道,在ES6中新增了很多的特性,包括Map,Set等新的数据结构,算上数组和对象已经有四种数据集合了,就像数组可以使用forEach,对象可以使用for...in ...
- Intellij IDEA 常见问题
右击项目时,没有 Java Class,只能创建其他文件 IDEA 还没有将这个项目识别为 Maven 项目时,会出现这种情况.此时右键无法创建类. 解决办法: 手动为 IDEA 指定项目类型:如果编 ...
- Cocos2d-X网络编程(4) Cocos2d中的网络通信协议——Socket通信
Socket,俗称网络套接字,本身并不是协议,而是一个调用接口,是对TCP/IP协议的封装和应用,.提供了一系列方法方便开发者进行网络通讯. TCP/IP协议是使用最早的通讯协议,它是传输层协议,主要 ...
- linux最强编辑神器vim常用命令大全:编辑、插入、删除、替换、保存...
我说vim是编辑器之神大家没有意见吧 下面分享一些vim常用命令,大家可以收藏一下 进入vim: vim配置: vim中光标移动: vim中屏幕滚动: vim中插入文本类: 文本替换: 格式 : 范 ...
- 【C语言--数据结构】线性顺序表
线性表的本质: 1.线性表(List)是零个或者多个数据元素的集合: 2.线性表中的数据元素之间是有顺序的: 3.线性表中的数据元素个数是有限的: 4.线性表中的数据元素的类型必须相同: 定义: 线性 ...
- Linux环境安装mongodb
介绍 上篇介绍了Linux环境下安装Node.js的步骤,紧接着来安装mongodb.另外,推荐我的另一篇 Windows下图文详解Mongodb安装及配置,先在Windows下熟悉下mongodb, ...
- Projection Pursuit Regression----读书笔记
The central idea is to extract linear combinations of the inputs as derived features, and then model ...
- 08: mysql主从原理
1.1 mysql主从同步 参考博客:https://www.cnblogs.com/kevingrace/p/6256603.html 1.mysql主从同步(复制)概念 1. 将Mysql某一 ...
- 【ES6】对象的新功能与解构赋值
ES6 通过字面量语法扩展.新增方法.改进原型等多种方式加强对象的使用,并通过解构简化对象的数据提取过程. 一.字面量语法扩展 在 ES6 模式下使用字面量创建对象更加简洁,对于对象属性来说,属性初始 ...
- install stackless python on ubuntu
前言 我准备用stackless模拟游戏玩家登陆/注册等行为,测试游戏服务器的性能. 但是在安装stackless的过程中遇到了很多问题,特此记录下来,也分享给需要的朋友. 关于stackless S ...