基础篇_使用ListView

ListView 组件 用于显示一个垂直的滚动列表,其中的元素之间结构近似而仅数据不同。
ListView 更适于长列表数据,且元素个数可以增删。和 ScrollView 不同的是,ListView 并不立即渲染所有元素,而是优先渲染屏幕上可见的元素。
ListView 组件必须的两个属性是 dataSource 和 renderRow。

dataSource 是列表的数据源,而 renderRow 则逐个解析数据源中的数据,然后返回一个设定好格式的组件来渲染。

下面的例子创建了一个简单的 ListView ,并预设了一些模拟数据。
首先是初始化 ListView 所需的dataSource,其中的每一项(行)数据之后都在 renderRow 中被渲染成了Text 组件,最后构成整个 ListView。

rowHasChanged 函数也是ListView 的必需属性。这里我们只是简单的比较两行数据是否是同一个数据(=== 符号只比较基本类型数据的值,和引用类型的地址)来判断某行数据是否变化了。

import React, { Component } from 'react';
import {
    AppRegistry,
    ListView,
    Text,
    View } from 'react-native';

class MyApp extends Component {
    
    // 初始化模拟数据
    constructor(props) {
        super (props);
        const ds = new ListView.DataSource({rowHasChanged:(r1, r2) => r1 !== r2});
        this.state = {
        dataSource:ds.cloneWithRows([
           'john','joel','james','jimmy','jackson','jillian','julie','Devin'
            ])
        };
    }
    
    render() {
        return(
               <View style={{flex: 1, paddingTop: 22}}>
               <ListView
               dataSource={this.state.dataSource}
               renderRow={(rowData) => <Text>{rowData}</Text>}
               />
               </View>
        );
    }
}
// 注册应用(registerComponent)后才能正确渲染
// 注意:只把应用作为一个整体注册一次,而不是每个组件/模块都注册
AppRegistry.registerComponent('MyApp', () => MyApp);


ListView 的一个常用场景就是从服务器端取回列表数据然后显示.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,933评论 18 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,954评论 6 342
  • 前言 学习本系列内容需要具备一定 HTML 开发基础,没有基础的朋友可以先转至 HTML快速入门(一) 学习 本人...
    珍此良辰阅读 13,379评论 11 24
  • 年轻人,总是心高气傲,受不得委屈,不愿意在人前低头,爱较真,爱暴躁,总觉得自己就是上帝派来伸张正义的使者。 表现出...
    大神小桂子阅读 499评论 3 4
  • 有人说爱情是吹进眼睛里的沙 不舒服了一阵子 流着眼泪笑着让人吹下 那粒沙啊 飘啊,飘啊 ...
    dola哆啦阅读 265评论 2 1