React Native 自定义ListView

"use strict"

import React, { Component } from ‘react‘;import {    AppRegistry, // 注册组件,是应用的JS运行入口    StyleSheet,  // 样式表, 类似于一个集合包含各个组件的属性    ListView,    Dimensions,    Text,    TouchableOpacity,    Image,    View} from ‘react-native‘;

const { width, height } = Dimensions.get(‘window‘)

var IMAGES = [    require(‘./Resource/Test/1.png‘),    require(‘./Resource/Test/2.jpeg‘),    require(‘./Resource/Test/3.png‘),    require(‘./Resource/Test/1.png‘),    require(‘./Resource/Test/2.jpeg‘),    require(‘./Resource/Test/3.png‘),    require(‘./Resource/Test/1.png‘),    require(‘./Resource/Test/2.jpeg‘),    require(‘./Resource/Test/3.png‘)

];

// 声明一个 Helloworld 组件class HelloWorld extends Component {

    constructor(props) {

        super(props);        const ds = new ListView.DataSource({            rowHasChanged: (r1, r2) => r1 !== r2 //        });        this.state = {

            dataSource: ds.cloneWithRows([‘  1‘, ‘ 2‘, ‘3‘, ‘4‘, ‘5‘, ‘6‘, ‘7‘, ‘8‘, ])        };    }

    // cell 点击方法    touchRow(e) {

        alert(‘第 ‘ + e + ‘ 行‘)    }

    // 自定义row(看作cell)    renderRow(rowData, sectionID, rowID) {        var imgSource = IMAGES[rowID];        return (            <TouchableOpacity onPress={() => this.touchRow(rowData)}>                <View style={styles.rowViewStyle}>                    <Image style={styles.imageThumb} source={imgSource} />                    <Text style={styles.textStyle}>                            {rowData + ‘自定义追加内容,默认自动换行。  自定义追加内容,默认自动换行。  自定义追加内容,默认自动换行。  ‘}                    </Text>                </View>            </TouchableOpacity>        );    }

    render() { // 渲染

      return (

          <View style={styles.container}>              <ListView contentContainerStyle={styles.listViewStyle}                        showsVerticalScrollIndicator={true}                        dataSource={this.state.dataSource}                        renderRow={(rowData, sectionID, rowID) => this.renderRow(rowData, sectionID, rowID)}              />          </View>    );  }}

const styles = StyleSheet.create({

    container: {        flex: 1, // 当一个元素定义了flex属性时,表示该元素是可伸缩的(flex的属性值大于0的时候才可伸缩),        backgroundColor: ‘white‘,        paddingTop: 20,  // 父组件View,距离屏幕顶部20(状态栏)        // width: 300, //把 flex: 1 去掉,自行设定width height,可看一下效果        // height:400,    },    listViewStyle: {        backgroundColor: ‘red‘ // listView北京颜色

    },    textStyle: {        flex: 1,        color: ‘black‘,        fontSize: 16,    },    rowViewStyle: {        flexDirection: ‘row‘,        justifyContent: ‘center‘,        padding: 10,        backgroundColor: ‘#F6F6F6‘,    },    imageThumb: {        width: 50,        height: 50,    },});

AppRegistry.registerComponent(‘HelloWorld‘, () => HelloWorld);

				
时间: 2024-10-25 02:52:12

React Native 自定义ListView的相关文章

React Native自定义导航栏

之前我们学习了可触摸组件和页面导航的使用的使用: 从零学React Native之09可触摸组件 - 从零学React Native之03页面导航 - 经过之前的学习, 我们可以完成一个自定义导航栏了, 效果如下: 我们需要创建一个 NaviBar.js 用来显示顶部的导航栏, 还需要四个界面(Page1.js,Page2.js,Page3.js,Page4.js). 当然还需要修改index.android.js或者index.ios.js 用来处理4个界面的切换. 导航栏NaviBar 实现

Android React Native自定义组件的流程

假设我们现在有这么一个需求,就是自定义一个组件,该组件由一个小图标和图标的文字说明组成,并且带有背景色,背景色可设置,宽度高度可设置.如下图所示正是两个这样的组件所组成. 首先,在index.android.js目录下新建一个js文件,命名为item.js,在里面输入模板代码 /** * Sample React Native App * https://github.com/facebook/react-native */ 'use strict'; var React = require('

React Native 自定义radio 单选or多选

前段时间一直在做react native开发,下面介绍下自定义自定义radio的封装. 1 import React, { PureComponent } from 'react'; 2 import PropTypes from 'prop-types'; 3 import { View, Text, StyleSheet, TouchableOpacity, Image, Dimensions } from 'react-native'; 4 import uniq from 'lodash

React Native的ListView的布局使用

1> ListView组件用于显示一个垂直的滚动列表,其中的元素之间结构近似而仅数据不同. ListView更适于长列表数据,且元素个数可以增删.和ScrollView不同的是,ListView并不立即渲染所有元素,而是优先渲染屏幕上可见的元素. ListView组件必须的两个属性是dataSource和renderRow.dataSource是列表的数据源,而renderRow则逐个解析数据源中的数据,然后返回一个设定好格式的组件来渲染. 下面的例子创建了一个简单的ListView,并预设了一

react native自定义Echarts

一. 导入第三方包 npm install native-echarts --save 二.导入Echarts组件 三.定义option 四.控件绑定option 下面是效果图           更多设置请参考官方网址 http://echarts.baidu.com/echarts2/doc/example.html

React Native Android 应用层实战沦陷记

[工匠若水 http://blog.csdn.net/yanbober 未经允许严禁转载,请尊重作者劳动成果.私信联系我] 1 背景 一眨眼又一年快要过去了,原计划今年的最后一个小目标(React Native)看样子要留尾巴到明年了,React Native 想说爱你不容易.怎么评价你呢?应用层 JSX 编写还是很友好的,尼玛框架接入的各种锅却让人痛哭不已,万事开头难,对于 React Native 的接入可以说大量工作可能都需要投入到框架接入中(各种灰度实验的兼容性.各种锅),一旦接入稳定以

React Native 调研报告

Facebook三月份开源了React Native iOS平台的框架,让移动开发人员和web开发者都各自兴奋了一把:native的移动开发者想的比较多的估计是Facebook的那句:"learn once, write everywhere",而web开发者兴奋的估计是,不需要学习iOS那陌生的OC或者swift语言,用自己熟悉的javascript语言就可以开发原生的移动APP了.那么新推出的react native 能否承载的了两大阵营的开发者的期待了.本人及同事对react n

React Native之prop-types进行属性确认

React Native已经升级到0.51.0了,版本升级很快,但是对老项目也会有一些问题,常见的就是属性找不到的问题.例如: 主要原因是随着React Native的升级,系统废弃了很多的东西,过去我们可以直接使用 React.PropTypes 来进行属性确认,不过这个自 React v15.5 起就被移除了,转而使用prop-types库来进行替换 属性确认 属性确认的作用 使用 React Native 创建的组件是可以复用的,所以我们开发的组件可能会给项目组其他同事使用.但别人可能对这

React Native之属性类型检查机制详解 PropType 变成 prop-types

属性确认的作用 使用 React Native 创建的组件是可以复用的,所以我们开发的组件可能会给项目组其他同事使用.但别人可能对这个组件不熟悉,常常会忘记使用某些属性,或者某些属性传递的数据类型有误. 因此我们可以在开发 React Native 自定义组件时,可以通过属性确认来声明这个组件需要哪些属性.这样,如果在调用这个自定义组件时没有提供相应的属性,则会在手机与调试工具中弹出警告信息,告知开发者该组件需要哪些属性. React Native已经升级到0.51.0了,版本升级很快,但是对老