React Native 让 Flatlist  支持  选中多个值,并获取所选择的值

实现效果如下:

实现代码:

import React, {Component} from 'react';
import {
Image,
Text,
View,
TouchableOpacity,
FlatList,
StyleSheet,
Button
} from 'react-native'; export default class TestListCheck extends Component {
constructor(props) {
super(props);
this.state = {
data: [
{
"id": "",
select: false
},
{
"id": "",
select: false
},
{
"id": "",
select: false
},
{
"id": "",
select: false
},
{
"id": "",
select: false
},
{
"id": "",
select: false
}
],//数据源
selectItem: [],
}
} _selectItemPress(item) {
if (item.select) {
this.state.selectItem.splice(this.state.selectItem.findIndex(function (x) {
return x === item.id;
}), );
} else {
this.state.selectItem.push(item.id);
}
this.state.data[item.id].select = !item.select;
this.setState({data: this.state.data})
} _submitPress() {
alert(`选中了${JSON.stringify(this.state.selectItem)}`)
} render() {
return (
<FlatList
keyExtractor={item => item.id}
data={this.state.data}
extraData={this.state} //这里是关键,如果不设置点击就不会马上改变状态,而需要拖动列表才会改变
ListHeaderComponent={({item}) => {
return (<Button title={"确定"} onPress={() => this._submitPress()}/>)
}}
renderItem={({item}) => {
return (
<View style={styles.standaloneRowFront}> <TouchableOpacity
onPress={() => this._selectItemPress(item)}>
<View style={styles.row}>
{item.select ?
<Image source={require('./ic_radio_checkbox_check.png')}
style={styles.imgCheckIcon}/>
:
<Image source={require('./ic_radio_checkbox_uncheck.png')}
style={styles.imgCheckIcon}/>
}
<View style={{marginLeft: }}>
<Text>{item.select ? ("选中") : ("未选中")}</Text>
</View>
</View>
</TouchableOpacity> </View>
)
}}
/>
);
}
}
const styles = StyleSheet.create({
standaloneRowFront: {
flexDirection: 'row',
alignItems: 'center',
backgroundColor: '#FFF',
height: ,
marginBottom:
},
imgCheckIcon: {
width: ,
height: ,
lineHeight: ,
},
row: {
flexDirection: "row",
alignItems: "center",
},
});

本博客地址: wukong1688

本文原文地址:https://www.cnblogs.com/wukong1688/p/11080603.html

转载请著名出处!谢谢~~

[RN] React Native 让 Flatlist 支持 选中多个值,并获取所选择的值的更多相关文章

  1. [RN] React Native 使用 FlatList 和 ScrollView 的下拉刷新问题

    React Native 使用 FlatList 和 ScrollView 实现 下拉刷新时,RefreshControl 控件不起作用, 后来经查明,原来 RefreshControl 要加在 Sc ...

  2. [RN] React Native 使用 FlatList 实现九宫格布局 GridList

    React Native 使用 FlatList 实现九宫格布局 先看图片演示实例: 本文以图片列表为例,实现九宫格布局! 主要有两种方法: 1)方法一: 利用FlatList的 numColumns ...

  3. [RN] React Native 实现 FlatList上拉加载

     FlatList可以利用官方组件 RefreshControl实现下拉刷新功能,但官方没有提供相应的上拉加载的组件,因此在RN中实现上拉加载比下拉刷新要复杂一点. 不过我们仍可以通过FlatList ...

  4. [RN] React Native 下实现底部标签(支持滑动切换)

    上一篇文章 [RN] React Native 下实现底部标签(不支持滑动切换) 总结了不支持滑动切换的方法,此篇文章总结出 支持滑动 的方法 准备工作之类的,跟上文类似,大家可点击上文查看相关内容. ...

  5. React Native之FlatList的介绍与使用实例

    React Native之FlatList的介绍与使用实例 功能简介 FlatList高性能的简单列表组件,支持下面这些常用的功能: 完全跨平台. 支持水平布局模式. 行组件显示或隐藏时可配置回调事件 ...

  6. [RN] React Native 常见基本问题归纳总结

    [RN] React Native  常见基本问题归纳总结 本问题总结涉及到版本为: "react": "16.8.3","react-native& ...

  7. [RN] React Native 实现图片预览

    [RN] React Native 实现图片预览 效果预览: 代码如下: 'use strict'; import React, {Component} from 'react'; import {I ...

  8. [RN] React Native 关闭所有黄色警告

    [RN] React Native 关闭所有黄色警告 console.ignoredYellowBox = ['Warning: BackAndroid is deprecated. Please u ...

  9. [RN] React Native 幻灯片效果 Banner

    [RN] React Native 幻灯片效果 Banner 1.定义Banner import React, {Component} from 'react'; import {Image, Scr ...

随机推荐

  1. sublime text3安装ConvertToUTF8

    1.安装 Package Control 方式1:命令行安装 按ctrl+~快捷键,调出一个小文本款,然后粘贴以下代码: import urllib.request,os,hashlib; h = ' ...

  2. maven打包产生可执行jar包

    http://blog.csdn.net/u014695188/article/details/53128095 https://blog.csdn.net/fuck487/article/detai ...

  3. Docker File

  4. 黑科技!仅需 3 行代码,就能将 Gitter 集成到个人网站中,实现一个 IM 即时通讯聊天室功能?

    欢迎关注个人微信公众号: 小哈学Java, 文末分享阿里 P8 高级架构师吐血总结的 <Java 核心知识整理&面试.pdf>资源链接!! 个人网站: https://www.ex ...

  5. 1小时搞定vuepress快速制作vue文档/博客+免费部署预览

    先来一下演示效果.和vue的官方文档几乎是一致的,页面内容都可自定义. 此教程部署后的效果预览. 在你跟着教程搭建好项目之后,你会收获: 快速搭建一个文档/博客,后期只需要修改markdown内容和导 ...

  6. c# asp.net core取当月第一天和最后一天及删除最后一个字符的多种方法

    当月第一天0时0分0秒 DateTime.Now.AddDays( - DateTime.Now.Day).Date 当月最后一天23时59分59秒 DateTime.Now.AddDays( - D ...

  7. Linux 集群概念 , wsgi , Nginx负载均衡实验 , 部署CRM(Django+uwsgi+nginx), 部署学城项目(vue+uwsgi+nginx)

    Linux 集群概念 , wsgi , Nginx负载均衡实验 , 部署CRM(Django+uwsgi+nginx), 部署学城项目(vue+uwsgi+nginx) 一丶集群和Nginx反向代理 ...

  8. Spring Boot 使用 JWT 进行身份和权限验证

    上周写了一个 适合初学者入门 Spring Security With JWT 的 Demo,这篇文章主要是对代码中涉及到的比较重要的知识点的说明. 适合初学者入门 Spring Security W ...

  9. 触发器TRIGGER 自增IDENTITY 聚集索引CLUSTERED

    在触发器的“触发”过程中,有两个临时表inserted和deleted发生了作用.这两个特殊的临时表inserted和deleted,仅仅在触发器运行时存在,它们在某一特定时间和某一特定表相关. CR ...

  10. 将积累多年的java学习资料,pdf文档给大家分享一下,比如《大话设计模式》《算法》《Linux私房菜》等等

    话不多说,资料目录如下,需要的拿走,下载的同时别忘了点下推荐. 需要的点下面链接,到小编网盘进行下载: 2-大话设计模式.pdf 链接:https://pan.baidu.com/s/1b05puNO ...