A customiseable FlatList that allows you to select multiple rows.
npm install react-native-select-multipleimport React, { Component } from 'react'
import { View } from 'react-native'
import SelectMultiple from 'react-native-select-multiple'
const fruits = ['Apples', 'Oranges', 'Pears']
// --- OR ---
// const fruits = [
//   { label: 'Apples', value: 'appls' },
//   { label: 'Oranges', value: 'orngs' },
//   { label: 'Pears', value: 'pears' }
// ]
class App extends Component {
  state = { selectedFruits: [] }
  onSelectionsChange = (selectedFruits) => {
    // selectedFruits is array of { label, value }
    this.setState({ selectedFruits })
  }
  render () {
    return (
      <View>
        <SelectMultiple
          items={fruits}
          selectedItems={this.state.selectedFruits}
          onSelectionsChange={this.onSelectionsChange} />
      </View>
    )
  }
}
export default Appimport React, { Component } from 'react'
import { View, Text, Image } from 'react-native'
import SelectMultiple from 'react-native-select-multiple'
const fruits = ['Apples', 'Oranges', 'Pears']
// --- OR ---
// const fruits = [
//   { label: 'Apples', value: 'appls' },
//   { label: 'Oranges', value: 'orngs' },
//   { label: 'Pears', value: 'pears' }
// ]
const renderLabel = (label, style) => {
  return (
    <View style={{flexDirection: 'row', alignItems: 'center'}}>
      <Image style={{width: 42, height: 42}} source={{uri: 'https://dummyimage.com/100x100/52c25a/fff&text=S'}} />
      <View style={{marginLeft: 10}}>
        <Text style={style}>{label}</Text>
      </View>
    </View>
  )
}
class App extends Component {
  state = { selectedFruits: [] }
  onSelectionsChange = (selectedFruits) => {
    // selectedFruits is array of { label, value }
    this.setState({ selectedFruits })
  }
  render () {
    return (
      <View>
        <SelectMultiple
          items={fruits}
          renderLabel={renderLabel}
          selectedItems={this.state.selectedFruits}
          onSelectionsChange={this.onSelectionsChange} />
      </View>
    )
  }
}| Prop | Default | Type | Description | 
|---|---|---|---|
| items | - | array | All items available in the list (array of stringor{ label, value }) | 
| selectedItems | [] | array | The currently selected items (array of stringor{ label, value }) | 
| onSelectionsChange | - | func | Callback called when a user selects or de-selects an item, passed (selections, item) | 
| keyExtractor | index | func | keyExtractor for the FlatList | 
| checkboxSource | image | object | Image source for the checkbox (unchecked). | 
| selectedCheckboxSource | image | object | Image source for the checkbox (checked). | 
| flatListProps | {} | object | Additional props for the flat list | 
| style | default styles | object | Style for the FlatListcontainer. | 
| rowStyle | default styles | object | Style for the row container. | 
| checkboxStyle | default styles | object | Style for the checkbox image. | 
| labelStyle | default styles | object | Style for the text label. | 
| selectedRowStyle | default styles | object | Style for the row container when selected. | 
| selectedCheckboxStyle | default styles | object | Style for the checkbox image when selected. | 
| selectedLabelStyle | default styles | object | Style for the text label when selected. | 
| renderLabel | null | func | Function for render label. | 
| maxSelect | null | int | Maximum number of selected items | 
Feel free to dive in! Open an issue or submit PRs.
ISC © TABLEFLIP
A (╯°□°)╯︵TABLEFLIP side project.
