使用RadioItem实现多选、FlatList多选功能

 // 使用FlatList实现多选 
    private showFlatListMulti() {
        let dataList = this.state.data
        if (dataList && dataList.length) {
            const extraUniqueKey = () => Math.random().toString();
            const renderAssertItem = (render: ListRenderItemInfo<any>) => {
                return (
                    <View>
                        <RadioItem
                        key={render.index}
                        style={{ height: 45 }}
                        checked={render.item.checkedflag}
                        onChange={(event: any) => {

                            let oData: any = this.state.data;
                            let oNew: any[] = [];
                            oData.map((fItem: any) => {
                                // 将当前选中标记取反
                                if (render.item.promotionEvaId === fItem.promotionEvaId) {
                                    fItem.checkedflag = !fItem.checkedflag;
                                }
                                oNew.push(fItem);
                            });
                            this.setState({ data: oNew });
                        }}
                    >
                        {/* 自定义控件 */}
                        <View style={{ flex: 1, paddingVertical: 0, flexDirection: 'row' }}>
                            <SelSuggestView

                                bidderName={render.item.promotionEvaName}
                            />
                        </View>
                    </RadioItem>

                    </View>

                )
            }

            return (

                <FlatList
                    //数据绑定
                    data={dataList}
                    //列表显示控件
                    renderItem={renderAssertItem}

                    keyExtractor={extraUniqueKey}
                />


            );
        }
    }




//  使用RadioItem实现多选 为每条数据绑定一个标记(checkedflag)然后每次点击更新这个值 类似原生多选的实现
    private showMapCheck() {
        let dataList: any[] = this.state.data
        if (dataList && dataList.length) {

            return dataList.map((item, index) => {
                return (
                    <RadioItem
                        key={index}
                        style={{ height: 70 }}
                        checked={item.checkedflag}
                        onChange={(event: any) => {

                            let oData: any = this.state.data;
                            let oNew: any[] = [];
                            oData.map((fItem: any) => {
                                // 将当前选中标记取反
                                if (item.promotionEvaId === fItem.promotionEvaId) {
                                    fItem.checkedflag = !fItem.checkedflag;
                                }
                                oNew.push(fItem);
                            });
                            this.setState({ data: oNew });
                        }}
                    >
                        {/* 自定义控件 */}
                        <View style={{ flex: 1, paddingVertical: 15, flexDirection: 'row' }}>
                            <SelSuggestView

                                bidderName={item.promotionEvaName}
                            />
                        </View>
                    </RadioItem>
                );
            })
        }

    }

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值