import React, { Component } from "react";
import {
FlatList,
RefreshControl,
StyleSheet,
Text,
View,
ActivityIndicator,
SwipeableFlatList,
TouchableHighlight,
} from "react-native"; const CITY_NAMES = [
"河北省石家庄市",
"河北省唐山市",
"山西省太原市",
"内蒙包头市",
"辽宁省大连市",
"黑龙江省齐齐哈尔市",
"江苏省徐州市",
"浙江省杭州市",
"福建省福州市",
"江西省南昌市",
"山东省济南市",
"山东省青岛市",
"甘肃省兰州市",
"新疆乌鲁木齐市"
];
export default class SwipeableFlatListDemo extends Component {
constructor(props) {
super(props);
this.state = {
isLoading: false,
dataArray: CITY_NAMES
};
}
_renderItem(data) {
return (
<View style={styles.item}>
<Text style={styles.text}>{data.item}</Text>
</View>
);
}
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_NAMES);
}
this.setState({
dataArray: dataArray,
isLoading: false
});
}, 1000);
}
genIndicator() {
return <View style={styles.indicatorContainer}>
<ActivityIndicator
style={styles.indicator}
size={"large"}
animating={true}
/>
<Text>正在加载更多</Text>
</View>
}
genQuickActions(){
return <View style={styles.quickContainer}>
<TouchableHighlight
onPress={()=>{
alert('Delete?');
}}
>
<View style={styles.quick}>
<Text style={styles.text}>Delete</Text>
</View>
</TouchableHighlight>
</View>
}
render() {
return (
<View style={styles.container}>
<SwipeableFlatList
data={this.state.dataArray}
renderItem={data => this._renderItem(data)}
refreshControl={
<RefreshControl
title={"Loading"}
colors={["red"]}
tintColor={["blue"]}
refreshing={this.state.isLoading}
onRefresh={() => {
this.loadData(true);
}}
/>
}
ListFooterComponent={() => this.genIndicator()}
onEndReached={()=>this.loadData()}
renderQuickActions={()=>this.genQuickActions()}
maxSwipeDistance={100}
/>
</View>
);
}
} const styles = StyleSheet.create({
container: {
flex: 1
},
item: {
backgroundColor: "#169",
height: 100,
marginRight: 15,
marginLeft: 15,
marginBottom: 15,
alignItems: "center",
justifyContent: "center"
},
text: {
color: "white",
fontSize: 20
},
indicatorContainer: {
alignItems: "center"
},
indicator: {
color: "red",
margin: 10
},
quickContainer:{
flex:1,
flexDirection:"row",
justifyContent:'flex-end',
marginRight:15,
marginBottom:15,
},
quick:{
backgroundColor:'red',
flex:1,
alignItems:'flex-end',
justifyContent: 'center',
padding:10,
width:200,
}
});

效果图

SwipeableFlatList 实现类似于QQ列表滑动的更多相关文章

  1. [Phonegap+Sencha Touch] 移动开发72 List列表横向滑动操作(仿QQ列表滑动删除)

    原文链接:http://blog.csdn.net/lovelyelfpop/article/details/50425744 本插件有2个版本号:sencha touch 版本号和 extjs6 m ...

  2. Android 编程下代码之(QQ消息列表滑动删除)

       这份代码写出来有些时候了,一直没共享,现在把它共享给大家.简单列一下代码中你可以学到的知识点: 自定义控件的实现方式: 事件的拦截分发消费机制: QQ会话列表滑动删除原理: 最后附上源码链接:Q ...

  3. Android-自定义仿QQ列表Item滑动

    效果图: 布局中去指定自定义FrameLayout: <!-- 自定义仿QQ列表Item滑动 --> <view.custom.shangguigucustomview.MyCust ...

  4. iOS tableViewCell 在cell赋值、网络加载照片位置偏移大小错乱,做一个类似qq列表的tableview 更新3

    更新3: 问题 加载慢!(一时间给的处理负载过大,要分散)在下载图片,判断状态后 对每个cell对图片灰置图片处理保存,影响了主线程的操作 :上拉加载时,无法上下滑动tableview 无法点击cel ...

  5. JS时间轴效果(类似于qq空间时间轴效果)

    在上一家公司写了一个时间轴效果,今天整理了下,感觉有必要写一篇博客出来 给大家分享分享 当然代码还有很多不足的地方,希望大家多指点指点下,此效果类似于QQ空间或者人人网空间时间轴效果,当时也是为了需求 ...

  6. 自定义控件--CircleImageView(类似于QQ、微信圆形头像自定义控件)

    现在基本上所有的需要用户注册的APP都有一个需要用户上传头像的需求,上传的头像基本都是类似于QQ.微信等社交应用圆形头像.最近,正在做的一个社交应用多处需要用到这种圆形头像的处理,总不能每次都对图片做 ...

  7. 一个关于如何创建类似于QQ客户端聊天窗口的模拟小项目

    对于不久之前学习到的一个有关的类似于QQ聊天框的模拟项目,对其中涉及到的知识在这里做一下总结. 首先,你要先创建一个客户端聊天框(取名为:ChatClient,它是你创建的类),这个类继承了Frame ...

  8. 类似于qq空间类型的评论和回复

    最近学习thinkphp,做了一个博客系统,其中感觉实现一个类似于qq空间的评论和回复功能比较复杂,所以把这次的经历记录下来,与大家共勉,具体的方法就不说了,在这里分享一下思路. 目标就是这种,关键是 ...

  9. jQuery实现的3个基础案例(仿QQ列表分组,二级联动下拉框,模拟员工信息管理系统)

    1.仿QQ列表分组 <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type&quo ...

随机推荐

  1. C++ Primer 笔记——嵌套类 局部类

    1.嵌套类是一个独立的类,与外层类基本没什么关系.特别的是,外层类的对象和嵌套类的对象是相互独立的.在嵌套类的对象中不包含任何外层类定义的成员,在外层类的对象中也不包含任何嵌套类定义的成员. 2.嵌套 ...

  2. 011-Python-进程、线程于协程

    1.进程与线程 进程: 一个程序要运行时所需的所有资源的集合: 一个进程至少需要一个线程,这个线程称为主线程,一个进程里可以包含多个线程: cpu 核数越多,代表着你可以真正并发的线程越多2个进程之间 ...

  3. 一键安装基于dns的高可用k8s集群(3节点,etcd https)

    在公司,使用dns切换,可能会比keepalived+haproxy,更精简的易维护. 毕竟,高可用只是偶尔切换,不是时时切换. 且dns解析在自己可控时,更不会影响k8s线上使用了. (部分代码,由 ...

  4. php把一些预定义的 HTML 实体转换为字符。

    htmlspecialchars_decode() echo htmlspecialchars_decode($condition,ENT_QUOTES) '  会被转成 单引号

  5. python导入import

    1.参考 Python 相对导入与绝对导入 2.Python import 的搜索路径 在当前目录下搜索该模块 在环境变量 PYTHONPATH 中指定的路径列表中依次搜索 在 Python 安装路径 ...

  6. WebApi接口返回值不困惑:返回值类型详解

    前言:已经有一个月没写点什么了,感觉心里空落落的.今天再来篇干货,想要学习Webapi的园友们速速动起来,跟着博主一起来学习吧.作为程序猿,我们都知道参数和返回值是编程领域不可分割的两大块,此前分享了 ...

  7. get、post的区别

    Get.post请求的区别 前言 不论是get还是post方式,都是属于http协议,只是http的两种不同的传输方式,而http协议是基于TCP传输协议的,所以无论是get还是post,在传输层的意 ...

  8. AtCoder Regular Contest 099 (ARC099) E - Independence 二分图

    原文链接https://www.cnblogs.com/zhouzhendong/p/9224878.html 题目传送门 - ARC099 E - Independence 题意 给定一个有 $n$ ...

  9. sql对于字符串的处理

  10. 学习Spring必须了解的基础知识——回调机制

    上面这张图如果能看得懂就能理解什么是回调机制: A对象在调用a()方法时会调用B对象的b()方法,b()方法必须能调用A对象的callback()方法. 谁白了:a()方法有B对象b()方法的引用,b ...