目前新版的react native已经都用FlatList代替了ListView。所以有必要学习下FlatList都具体用法。官方中文网描述如下:

高性能的简单列表组件,支持下面这些常用的功能:

  • 完全跨平台。
  • 支持水平布局模式。
  • 行组件显示或隐藏时可配置回调事件。
  • 支持单独的头部组件。
  • 支持单独的尾部组件。
  • 支持自定义行间分隔线。
  • 支持下拉刷新。
  • 支持上拉加载。
  • 支持跳转到指定行(ScrollToIndex)。
  • 支持多列布局

实现代码如下:

import React, { Component } from 'react';
import {
    AppRegistry,
    FlatList,
    View,
    Button,
    Image,
    StyleSheet,
    Text,
    TouchableOpacity,
    Dimensions,
    Alert

} from 'react-native';

class  myapp extends React.PureComponent {

_flatList;

constructor(props) {
        super(props);
        this.state = {
            refer: false,
        }
    }

footView = () => {
        return (
            <View style={{flex: 1, flexDirection:'row',justifyContent: 'center',backgroundColor: '#a1f11a',alignItems: 'center',height:44}}>
                <Text>加载完毕</Text> 
            </View>
        )
    };

renderItemView = (item) => {
        return (
           
            <View style={styles.item_view}>
                <View>
                   <Image
                    style={styles.item_view_img}
                    source={{uri: 'https://img-blog.csdnimg.cn/20190323161354536.png'}}/>
                </View>
               
                  <View style={styles.item_text_view}>
                      <Text style={styles.item_view_text}>{item.title}</Text>
                      <Text style={styles.item_view_text} numberOfLines={10} >{item.content}</Text>
                  </View>
              
              </View>
        )
    };

separatorView = () => {
        return (
            <View style={{flex: 1, backgroundColor: '#ff0000', height: 1}}>

</View>
        )
    };

onRefresh = () => {
        this.setState({
            refer: true,
        });
        this.timer = setTimeout(
            ()=>{
                console.log('刷新结束');
                this.setState({
                    refer: false,
                });
            },
            2000
        );
    };

componentWillUnmount() {
        clearTimeout(this.timer)
    }

render() {
        var data = [];
        for (var i=0; i<15; i++) {
            data[i] = {key:i,title:'新闻标题'+i,content:'11111111111111111111新闻内容新闻内新闻闻内新闻1111速度速度速度达到速度速度速度颠三倒四内'+i}
        }
        return(

<View style={{backgroundColor: '#ffaaff', flex: 1, justifyContent: 'center'}}>
                <FlatList ref={(flatList)=>this._flatList = flatList} style={{backgroundColor: '#fff', flex: 1, marginTop: 44}}
                          data={data}
                          renderItem={({item}) => this.renderItemView(item)}
                                
                                  ListFooterComponent = {this.footView}
                                  ItemSeparatorComponent = {this.separatorView}

onViewableItemsChanged={(info)=>{
                              console.log(info);
                          }}
                          refreshing = {this.state.refer}
                          onRefresh={this.onRefresh}
                          onEndReachedThreshold={0.0000001}
                          onEndReached={(info) => {
                               Alert.alert('加载完毕');
                          } }
                />

</View>

)
    }
}

const styles = StyleSheet.create({

item_view: {
    width: Dimensions.get('window').width,
    flex: 1, 
    flexDirection:'row',
    alignItems: 'center',
    height: 80,
    
  },
  item_view_img:{
    marginLeft: 10,
    width: 60,
    height: 60
  },
  item_text_view:{
    marginLeft: 20
  },
  item_view_text:{
    paddingRight: 70  
  }
  
});

export default myapp;

FlatList的使用(一)相关推荐

  1. 记一个开发中遇到react-native flatList 的坑

    因項目需求封装了一个 View 作为 react native  flatList 的 item, 在原生 View 有方法响应需要传递到到 RN, 然后出现一个闪退问题: 在滑到最后在滑回来, 滑到 ...

  2. React Native学习(七)—— FlatList实现横向滑动列表效果

    本文基于React Native 0.52 Demo上传到Git了,有需要可以看看,写了新内容会上传的.Git地址 https://github.com/gingerJY/React-Native-D ...

  3. react native 中下拉列表FlatList组件的讲解以及实例demo

    RN中的下拉列表组件.以前RN的下拉列表是listView,但是这个组件的性能不咋地.当数据较多的时候就会很卡.所以RN就新出了一个FaltList组件来代替它.这里我们简单总结一下新的下拉组件. 一 ...

  4. react-native flatlist 上拉加载onEndReached方法频繁触发的问题

    问题 在写flatlist复用组件时,调用的时候如果父组件是不定高的组件,会造成组件无法显示 如果父组件样式{flex:1},则会出现下拉方法频繁触发或不正常触发的问题(我这里出现的问题是在列表第6个 ...

  5. React Native 实现FlatList的下拉刷新上拉加载

    RN对列表已经实现了下拉刷新与上拉加载的功能,但是为了更好用,做了封装. 实现的功能:     1.下拉刷新,使用原生下拉头.     2.上拉加载,自定义加载布局.     3.处理了重复刷新或重复 ...

  6. ReactNative简介、开发环境、调试、常用组件、useState状态、FlatList组件、SectionList组件、Platform 模块、定义样式、图片组件、触摸事件、打包apk发布版

    ReactNative简介: ReactNative是基于React语法来进行开发移动app的框架: ReactNative中提供了移动端专用的一些组件,我们要使用ReactNative固有的组件代替 ...

  7. 如何构建具有实时搜索功能的React Native FlatList

    by Vikrant Negi 通过Vikrant Negi 如何构建具有实时搜索功能的React Native FlatList (How to build a React Native FlatL ...

  8. ListView vs FlatList vs RecyclerListView性能对比

    前言 长列表或者无限下拉列表是最常见的应用场景之一.React Native在0.43版本之前写列表需要使用ListView,ListView存在性能问题,API也不友好,所以官方在0.43版本推出了 ...

  9. React Native FlatList和SectionList列表组件

    FlatList 之前使用的组件是ListView,当时要添加一个下拉刷新,上拉加载的功能,所以对ListView做了一些封装,但是后来看官方文档,不建议再使用ListView,因为效率问题,做过An ...

  10. 关于ReactNative0.56版本Flatlist列表内容跳动的问题

    Reactnative的版本升级一直是一个工作量比较的大的事情,每次升级都可能伴随着很多的坑. 前段时间在升级到0.56版本的时候发现一个问题,在flatlist使用中,加载多页后,列表项内容开始进行 ...

最新文章

  1. 【转】【C#】C#重绘windows窗体标题栏和边框
  2. oracle ohs是什么,怎么更改OHS端口为80
  3. 在WCF中使用Flag Enumerations
  4. Python打包之pyinstaller
  5. Ajax(5)UpdatePanel的使用方法
  6. php xcat createadmin,php xcat update升级后出错,不知怎么弄
  7. php自然排序法的比较过程,PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数)...
  8. 因设备需求超供应预期 摩托罗拉折叠机Razr推迟在美上市时间
  9. 通过模板设计按钮样式
  10. Windows YII2安装
  11. 怎样给计算机做屏幕保护,电脑屏保软件如何制作屏保 及如何设置屏幕保护
  12. 物联网技术应用成商业市场盈利关键
  13. 各类软件激活码(更新中)
  14. linux mysql cnf_mysql在linux下查看my.cnf位置的方法
  15. 《艺多不压身 艺多不养家》反思
  16. 【规律】Cunning Friends
  17. 计算机职称考试科目及内容,计算机职称考试科目有哪些?
  18. JSP设置Excel表格换行_外企大公司的 Excel 表格,都是这样设置隐藏的
  19. 文件描述符fd和文件指针File* fp的区别和转换
  20. 【IoT】创业:如何设计强有力的价值主张?

热门文章

  1. javascript打印页面
  2. STM32之TIM定时器
  3. 由SSL证书引发的微信公众平台token验证失败问题
  4. lengthb 函数和 length 函数
  5. 要618好产出?海尔智家:用户满意才是最大产出
  6. 大三不努力,大四徒伤悲 No.151
  7. 确认过眼神!斐讯K2P千兆路由是我想要的
  8. 使用java实现创建文件
  9. ssm框架连接mysql数据库的具体步骤_ssm框架搭建和整合流程
  10. 腾达n300虚拟服务器,腾达(Tenda)N300 V2无线路由器怎么设置