从零开始RNReact NativeReact Native的魔盒

ReactNative之ListView(八)

2017-05-05  本文已影响979人  袁峥

前言

眼看很多公司都开始尝试使用ReactNative,达到跨平台开发,最近也写了很多文章,希望让更多想了解的同学快速上手ReactNative.

如果喜欢我的文章,可以关注我微博:袁峥Seemygo

ListView原理

构造函数可以接受下列四种参数(都是可选):

getRowData(dataBlob, sectionID, rowID);
getSectionHeaderData(dataBlob, sectionID);
rowHasChanged(prevRowData, nextRowData);
sectionHeaderHasChanged(prevSectionData, nextSectionData);

ListView基本使用步骤

constructor(props) {
  super(props);
  var ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
 }
constructor(props) {
  super(props);
  var ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
  
  this.state = {
     // 给数据源设置数据,创建新的数据,不过保存了之前的行改变方法属性
    dataSource: ds.cloneWithRows(['row 1', 'row 2']),
  };
 }


render() {
        return (

            <View style={{flex:1}}>
                <ListView dataSource={this.state.ds}
                          renderRow={this._renderRow.bind(this)}
                />
            </View>
        )

    }

    // 实现数据源方法,每行cell外观
    _renderRow(rowData, sectionID, rowID, highlightRow) {
        return (
            <View>
                <Text>{rowData}</Text>
            </View>
        );
    }

ListView分割线

 // 哪一组,哪一行,相邻行是否高亮
    _renderSeparator(sectionID, rowID, adjacentRowHighlighted)  {
        console.log(sectionID,rowID,adjacentRowHighlighted);
        return (
            <View style={{height:1,backgroundColor:'black'}}></View>
        )
    }

ListView头部视图

 _renderHeader() {
        return (
            <View>
                <Text>头部视图</Text>
            </View>
        )
    }

ListView尾部视图

 _renderFooter() {
        return (
            <View>
                <Text>尾部视图</Text>
            </View>
        )
    }


ListView点击cell高亮


    _renderRow(rowData, sectionID, rowID, highlightRow) {

        return (
            <TouchableOpacity onPress={()=>{
                AlertIOS.alert(rowID);
                highlightRow(sectionID,rowID)
            }}>
                <View>
                    <Text>{rowData}</Text>
                </View>
            </TouchableOpacity>

        );
    }
上一篇下一篇

猜你喜欢

热点阅读