React Native 学习之ListView(二):九宫格

Demo展示

1.gif

今天学习的是用ListView来实现九宫格这样的一个效果。你可能会说,直接用一个View组件包裹着Image和Text也可以做出来。确实是的,不过之前我们在学习Image组件时,仿美团首页顶部效果时,有那么多item需要加载,若是有更多的item项,我们还是全部把它写好,全部一次性渲染?很显然这没有达到复用和提高性能的期望。

昨天初步学习了ListView的使用,RN中对于ListView的渲染是进行过的渲染优化的,不过ListView的列表数据一般是垂直方向,那怎么实现横向的列表了?在学习View组件时,它有一个属性:flexDirection,用来设置一个组件在View中排列的方向,并且当一行摆放不下的时候,我们需要其它组件摆放到第二行,此时我们可以用到View的另外一个属性:flexWrap。但是,对于ListView来说,我们不能直接通过Style来使用他们,而须通过它的一个属性:contentContainerStyle。

Demo实现

这里只贴一下重点代码,上篇文章有说明使用ListView的一些步骤

constructor(props) {
    super(props);
    var data = this.props.data;
    var ds = new ListView.DataSource({rowHasChanged: (r1, r2)=> r1 !== r2});
    this.state = {
        dataSource: ds.cloneWithRows(data)
    };
}

renderRow(rowData) {

    return (
        <TouchableOpacity
            activeOpacity={0.5}
            onPress={()=>this.showDialog(rowData.title)}
            style={styles.itemContainer}
        >
            <View >
                <Image
                    source={{uri: rowData.icon}}
                    style={{width: 80, height: 80}}
                />
                <Text style={styles.textStyle}>{rowData.title}</Text>
            </View>
        </TouchableOpacity>
    );

}

----------------------------
listViewContent: {
    flexDirection: 'row',
    flexWrap: 'wrap'
},

好了,今天的ListView的学习就学完了。下篇文章我们将继续学习ListView,通过一个固定ListView头部的Demo来研究一下ListView的高级用法,敬请期待。

代码下载

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 180,921评论 25赞 708
  • 前言 学习本系列内容需要具备一定 HTML 开发基础,没有基础的朋友可以先转至 HTML快速入门(一) 学习 本人...
    珍此良辰阅读 13,692评论 11赞 24
  • 在一片草原上 有一身穿黑色衣服的女生虚弱的躺在地上 “小邪月,你醒醒 快醒醒啊”一道温婉的声音回荡在鬼面锁耳边 “...
    红衣鬼妖娆阅读 593评论 0赞 0
  • 1 2012年9月27日,那是我大专毕业的第二年机缘巧合来到这个团队工作。那时的自己没有相关的工作经验,非名牌大学...
    笑笑_feng阅读 296评论 0赞 0
  • 前言:2015年的暑假,那是我人生中非常非常特别的一段时间(这是一个很特别的故事,以后再讲)。2015年...
    我是希瑞2017阅读 420评论 2赞 3

友情链接更多精彩内容