android - NativeBase - ReactNative - 下拉列表

标签 android ios list react-native native-base

您对如何做到这一点有什么想法吗?

通过单击按钮打开的下拉列表,此下拉列表包含其他项目列表。如果可能的话,动态地!

例如: 类别:水果,食品(第一个下拉列表) 在这个类别中,每个类别都有一个列表:

水果:[“香蕉”、“苹果”、“草莓”] 食物:[“1”、“2”、“3”]。

看起来像这样:

enter image description here

最佳答案

我有一个想法给你,希望这能解决你的问题。目前无法添加嵌套的 Picker 组件。所以我想出了这个主意:

首先是重构数据

const data = [
    {'title' : 'Fruits',
    'items' : ["Banana", "Apple", "Strawberry"]
    },
    {'title' : 'Foods',
    'items' : ["1", "2", "3"]}
]

下一步在我们点击按钮时为显示组件创建状态切换

 constructor() {
  super();
  this.state = {
      toggleDropdown: false
  }
}

接下来是触发状态的创建函数

onClickButton = () => {
  this.setState({
      toggleDropdown: !this.state.toggleDropdown
  })
}

制作显示下拉菜单的按钮

<Button primary onPress={this.onClickButton}>
   <Text>Click Me!</Text>
</Button>

并显示下拉列表

{this.state.toggleDropdown &&  //cek if toggle is true or false
            data.map((item, index) => { //loop the first dropdown
                return (
                    <Content key={index}>
                        <Text style={{backgroundColor: '#CCC'}} >{item.title}</Text>
                        <Picker mode="dropdown" > 
                            {item.items.map((value, idx) => { //loop the second dropdown
                                return(
                                    <Item key={idx} label={value} value={idx} />
                                )
                            })}
                        </Picker>
                     </Content>
                )
            })
        }

这是完整的源代码:

import React, { Component } from 'react';
import { Container, Content, Text, Button, Picker, Item } from 'native-base';

const data = [
        {'title' : 'Fruits',
        'items' : ["Banana", "Apple", "Strawberry"]
        },
        {'title' : 'Foods',
        'items' : ["1", "2", "3"]}
]

class Example extends Component {
  constructor() {
      super();
      this.state = {
          toggleDropdown: false
      }
  }
  onClickButton = () => {
      this.setState({
          toggleDropdown: !this.state.toggleDropdown
      })
  }
  render() {
    return (
        <Container>
          <Content>
            <Button primary onPress={this.onClickButton}>
                <Text>Click Me! </Text>
            </Button>
            {this.state.toggleDropdown &&  //cek if toggle is true or false
                data.map((item, index) => { //loop the first dropdown
                    return (
                        <Content key={index}>
                            <Text style={{backgroundColor: '#CCC'}} >{item.title}</Text>
                            <Picker mode="dropdown" > 
                                {item.items.map((value, idx) => { //loop the second dropdown
                                    return(
                                        <Item key={idx} label={value} value={idx} />
                                    )
                                })}
                            </Picker>
                         </Content>
                    )
                })
            }
           </Content>
        </Container>
    );
  }
}

export default Example

这是截图:

Screenshot

希望对你有帮助:)

关于android - NativeBase - ReactNative - 下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44996953/

相关文章:

android - 如何部署我的 Android 项目以及如何在我的设备上进行测试

Python:将嵌套列表转换为具有坐标位置的简单列表

ios - iOS 应用程序在后台录制时音频中断

ios - 截断单词末尾的渐变淡出

ios - 使用 Swift 的 UITableView

java - 检查重叠基因组区域的算法

java - 如何执行一个任务并每分钟返回一个数据

android - 在Android中反编译.apk

android - 如何将 ArrayList<String> 中的字符串传递给接受多个字符串的方法?

Android - 如何重新生成 R 类?