官方文档详细的介绍了ListView的使用方式。 在这里我简单的进行了实践,拉取网络数据进行显示,触底自动加载更多。代码非常简单,这里直接贴出来。

import React, { Component } from 'react';
import {AppRegistry,StyleSheet,Text,ListView,View,Image
} from 'react-native';var totalList = []; export default class BillProject extends Component {  constructor(props) {super(props);const ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});this._onEndReached.bind(this);this.state = {dataSource: ds.cloneWithRows([]),loadState:"1", // 1正在加载 2加载完成 3 加载错误 page:0};}render() {console.log("render");return (<ListViewonEndReachedThreshold={2}onEndReached={this._onEndReached.bind(this)}contentContainerStyle={styles.list}enableEmptySections={true}dataSource={this.state.dataSource}renderRow={this._renderRow}/>);}_renderRow(rowData, sectionID, rowID){return (<View style={styles.row}><Image   style={styles.thumb}                     source={{uri: "http://api.all-appp.com/uploads/" + rowData.zuopin_url}}></Image></View>);}componentWillMount(){this.getZuoPinFromApi();}_onEndReached(){console.log("到达底部");//加载更多数据 通过onEndReachedThreshold设置离底部还有几个cell 需要render时触发this.getZuoPinFromApi();}//获取网络数据getZuoPinFromApi() {try {let formData = new FormData();  formData.append("type","3");  formData.append("page",this.state.page); formData.append("userid",""); formData.append("myid","3"); formData.append("filterid",totalList.length > 0 ? totalList[totalList.length-1].zuopin_id : ""); formData.append("customType","1"); formData.append("version","0.2.8");var self = this; var response = fetch('http://api.all-appp.com/api/show',{method: 'POST',headers: {'Accept': 'application/json','Content-Type': 'application/json',},body: formData}).then((response) => response.json()).then((responseJson) => {console.log("response " + response);if(responseJson.code == 0){// self.state.dataSource.cloneWithRows(responseJson.zuopins)// self.state.dataSource.concat(responseJson.zuopins);// self.setState(self.state.dataSource);totalList = totalList.concat(responseJson.zuopins);this.setState({  dataSource: self.state.dataSource.cloneWithRows(totalList), loadState:"1",page:self.state.page + 1});  }else{console.log(responseJson.msg);}}).catch((error) => {console.error(error);});;} catch(error) {console.error(error);}}
}
const styles = StyleSheet.create({list: {marginTop:5,justifyContent: 'space-around',flexDirection: 'row',flexWrap: 'wrap'},row: {justifyContent: 'center',padding: 5,margin: 3,width: 150,height: 150,backgroundColor: '#F6F6F6',alignItems: 'center',borderWidth: 1,borderRadius: 5,borderColor: '#CCC'},thumb: {width: 140,height: 140},text: {flex: 1,marginTop: 5,fontWeight: 'bold'},
});
AppRegistry.registerComponent('BillProject', () => BillProject);复制代码

在constructor方法中新建一个DataSource实例.

#####用到的一部分Listview属性。

onEndReachedThreshold={2} 表示在离底部还有2个row需要render的时候触发 onEndReached 方法。

>onEndReached={this._onEndReached.bind(this)} 利用这个方法进行触底加载更多操作,代码里没有给出加载动画,不过RN给出了一个默认实现属性RefreshControl,你们可以自行尝试。
>enableEmptySections={true} 允许组为空
>renderRow={this._renderRow} 每个cell绘制方法

React Native学习之 ListView 的简单使用相关推荐

  1. React Native学习提纲

    React Native学习提纲 当前版本最后修订日期: 2015年10月21日 一. React.js入门基础 1.基础HTML/CSS与基础开发工具使用 - html基础 doctype.常用标签 ...

  2. React Native 学习资源精选仓库

    <React Native Awesome>这里fork过来的,汇集了各类react-native学习资料.工具.组件.开源App.资源下载.以及相关新闻等,只求精不求全.因后面无法 Pu ...

  3. React Native 学习资源精选仓库(汇聚知识,分享精华)

    React Native 学习资源精选仓库(汇聚知识,分享精华) <React Native Awesome>这里fork过来的,汇集了各类react-native学习资料.工具.组件.开 ...

  4. iOS开发者React Native学习路线

    2019独角兽企业重金招聘Python工程师标准>>> http://blog.talisk.cn/blog/2016/08/13/RN-Learning-path-for-iOS- ...

  5. React Native 系列(七) -- ListView

    前言 本系列是基于React Native版本号0.44.3写的.几乎所有的App都使用了ListView这种组件,这篇文章将学习RN中ListView的平铺样式和分组样式. ListView平铺样式 ...

  6. react native学习笔记29——动画篇 Animated高级动画

    1.前言 上一节我们学习了全局的布局动画api--LayoutAnimation,体验到其流畅柔和的动画效果,但有时我们需要实现一些更精细化的动画,或者完成一些组合动画,这时我们可以使用React N ...

  7. React Native学习速记

    学习路线建议:ES5/6 -> React -> React Native  -> Redux + React-Navigation等 ES5 :https://wangdoc.co ...

  8. react native学习笔记13——FlatList上拉加载

    我们可以利用官方组件RefreshControl实现下拉刷新功能,但React Native官方没有提供相应的上拉加载的组件,因此在RN中实现上拉加载比下拉刷新要复杂一点. 虽然没有直接提供上拉加载的 ...

  9. React Native学习笔记一之搭建开发环境

    因为项目需要,今天开始正式学习React Native,先来搭建个开发环境 忐忑的心情 因为项目比较急,而且客户要求使用React Native开发,只能先学点基础然后在项目中使用的时候,边做边学了, ...

最新文章

  1. SpringBoot与SpringMVC的区别是什么?
  2. c语言水印添加,[求助]C语言 bmp文件加上水印
  3. docker 部署 nginx
  4. 1687: 数组操作(非常规思维)
  5. 【CASS精品教程】CASS9.1等高线的绘制完整案例教程
  6. 2022年中国全屋智能行业研究白皮书
  7. 拿起电话就开始给(飞鸽传书3.0)
  8. 苹果CMSv10官方版程序包
  9. odoo 的字段。orm对象
  10. 追影windows7 虚拟4桌面
  11. zabbix3.0.4 邮件告警详细配置
  12. springboot 文件上传 各种姿势 解锁,策略模式简单运用
  13. 系统学Android从零开始,附超全教程文档
  14. html游走字幕代码大全,html 滚动字幕代码
  15. VFP 常用 OCX 控件 注册
  16. excel随机数_软网推荐:Windows环境下快速生成随机数
  17. FMI飞马网 | 人工智能/大数据/程序/语言/项目管理/机器学习/Python书籍免费赠书
  18. 机器人产业化给导电环行业带来的机遇
  19. Cadence的版图绘制、DRC、LVS、PEX-以反相器为例
  20. 性能监控与服务器监控

热门文章

  1. MongoDB 计划缓存的影响
  2. 华为交换机路由器常用命令
  3. 微信支付服务器demo,集成微信支付(附带demo)
  4. go kegg_3分钟了解GO/KEGG功能富集分析
  5. c#和python_IronPython和C#交互
  6. flask框架如何实现修改密码和免密登录功能
  7. java atm 代码_java ATM取钱代码
  8. mysql的ab测试工具_轻量级性能测试工具ab / wrk / locust 分析 对比
  9. ACM小白入门之必须要了解的东西
  10. mysql e 导出数据库_mysql导出数据库几种方法