react-native分组列表SectionList

学习交流:https://gitee.com/potato512/Learn_ReactNative

react-native学习交流QQ群:806870562


效果图

代码示例

import React, { Component } from 'react';
import {
    StyleSheet,
    View,
    Text,
    SectionList
} from 'react-native';

type Props = {};
export default class SectionListPage extends Component<Props> {

    // 定义分组中的每个单元格
    listRow = (info) => {
        var txt = '  ' + info.item.type;
        return <Text style={styles.sectionItem}>{txt}</Text>
    };

    // 定义分组
    listSection = (info) => {
        var txt = info.section.key;
        return <View style={styles.sectionHeader}><Text style={styles.sectionTxtHeader}>{txt}</Text></View>
    };

    render() {

        // 定义数据源
        let sections = [
            { key: "UI View", data: [{ type: "View" }, { type: "Text" }, { type: "Image" }, {type: "TextInput"}, {type: "StyleSheet"}, {type: "ScrollView"}] },
            { key: "UI Other", data: [{ type: "ActivityIndicator" }, { type: "Alert" }, { type: "Animated" }, { type: "CameraRoll" }, { type: "Clipboard" }, {type:"Demensions"}, {type:"KeyboardAvoiding"}, {type:"Linking"}, {type:"Modal"}, {type:"PixedRation"}, {type:"RefreshControl"}, {type:"StatusBar"}, {type:"WebView"}] },
            { key: "UI List", data: [{ type: "FlatList" }, { type: "SectionList" }] },
            { key: "UI iOS", data: [{ type: "ActionSheet" }, { type: "AlertIOS" }, { type: "DatePickerIOS" },{ type: "ImagePickerIOS" }, { type: "NavigatorIOS" }, { type: "ProgressView" }, {type:"PushNotificationIOS"}, {type:"SegmentControlIOS"}, {type:"TabBarIOS"}] },
            { key: "UI Android", data: [{ type: "BackHandleAndroid" }, { type: "DatePickerAndroid" }, {type:"DrawLayoutAndroid"}, {type:"PermissionsAndroid"}, {type:"ProgressBarAndroid"}, {type:"TimePickerAndroid"}, {type:"ToastAndroid"}, {type:"ToolbarAndroid"}, {type:"ViewAndroid"}] },
            { key: "UI userInterface", data: [{ type: "Button" }, { type: "Picker" }, {type: "Slider"}, {type:"Switch"}] },
        ];

        return(
            <View>
                /* 分组列表*/
                <SectionList
                    renderSectionHeader={this.listSection}
                    renderItem={this.listRow}
                    ItemSeparatorComponent={() => <View style={{height:0.5, backgroundColor:"#FF0000"}}></View>}
                    ListHeaderComponent={HeaderComponent}
                    ListFooterComponent={FooterComponent}
                    sections={sections}>
                </SectionList>

            </View>
        )
    }
}

// 定义分组列表表头
const HeaderComponent = (() => <View style={styles.headerStyle}><Text style={styles.headerTxtStyle}>组件学习</Text></View>);
// 定义分组列表表尾
const FooterComponent = (() => <View style={styles.footerStyle}><Text style={styles.footerTxtStyle}>组件学习</Text></View>);

// 样式定义
const styles = StyleSheet.create({
    headerStyle: {
        height: 50,
        paddingHorizontal:20,
        backgroundColor:"#E6E6FA"
    },
    headerTxtStyle: {
        lineHeight: 50,
        textAlign:"left",
        fontSize:30,
        color:"#8A2BE2"
    },
    footerStyle: {
        height: 50,
        paddingHorizontal:20,
        backgroundColor:"#000000"
    },
    footerTxtStyle: {
        lineHeight:50,
        textAlign:"right",
        fontSize:20,
        color:"#EE82EE"
    },
    sectionHeader: {
        height:40,

        paddingHorizontal:10,
        justifyContent:"center",
        // alignItems:"center",
    },
    sectionTxtHeader: {
        fontSize:26,
    },
    sectionItem: {
        height:30,

        textAlign: "center",
        color: "#FFFFFF",
        fontSize:24,

        backgroundColor: '#9CEBBC'
    }
});

在App.js中的引用

import SectionListPage from "./Components/ListPage/SectionListPage";

type Props = {};
export default class App extends Component<Props> {
  render() {
    return (
      <SectionListPage/>
    );
  }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

番薯大佬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值