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);

</code></pre>

 

來自:http://www.cnblogs.com/madaha/p/5934107.html

 

 本文由用戶 juesexuexi 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!