ListItem
ListItems are used to display rows of information, such as a contact list, playlist, or menu. They are very customizable and can contain switches, avatars, badges, icons, and more.

Usage
Using Map Function - Implemented with avatar
import { ListItem } from 'react-native-elements'
const list = [
 {
 name: 'Amy Farha',
 avatar_url: 'https://s3.amazonaws.com/uifaces/faces/twitter/ladylexy/128.jpg',
 subtitle: 'Vice President'
 },
 {
 name: 'Chris Jackson',
 avatar_url: 'https://s3.amazonaws.com/uifaces/faces/twitter/adhamdannaway/128.jpg',
 subtitle: 'Vice Chairman'
 },
 ... // more items
]
<View>
 {
 list.map((l, i) => (
 <ListItem
 key={i}
 leftAvatar={{ source: { uri: l.avatar_url } }}
 title={l.name}
 subtitle={l.subtitle}
 bottomDivider
 />
 ))
 }
</View>
Using Map Function - Implemented with link and icon
import { ListItem } from 'react-native-elements'
const list = [
 {
 title: 'Appointments',
 icon: 'av-timer'
 },
 {
 title: 'Trips',
 icon: 'flight-takeoff'
 },
 ... // more items
]
<View>
 {
 list.map((item, i) => (
 <ListItem
 key={i}
 title={item.title}
 leftIcon={{ name: item.icon }}
 bottomDivider
 chevron
 />
 ))
 }
</View>
Using RN FlatList - Implemented with link and avatar
import { ListItem } from 'react-native-elements'
const list = [
 {
 name: 'Amy Farha',
 avatar_url: 'https://s3.amazonaws.com/uifaces/faces/twitter/ladylexy/128.jpg',
 subtitle: 'Vice President'
 },
 {
 name: 'Chris Jackson',
 avatar_url: 'https://s3.amazonaws.com/uifaces/faces/twitter/adhamdannaway/128.jpg',
 subtitle: 'Vice Chairman'
 },
 ... // more items
]
keyExtractor = (item, index) => index.toString()
renderItem = ({ item }) => (
 <ListItem
 title={item.name}
 subtitle={item.subtitle}
 leftAvatar={{ source: { uri: item.avatar_url } }}
 bottomDivider
 chevron
 />
)
render () {
 return (
 <FlatList
 keyExtractor={this.keyExtractor}
 data={list}
 renderItem={this.renderItem}
 />
 )
}
Using RN FlatList - Implemented with custom avatar component.
import { ListItem } from 'react-native-elements'
const list = [
 {
 name: 'Amy Farha',
 subtitle: 'Vice President'
 },
 {
 name: 'Chris Jackson',
 avatar_url: 'https://s3.amazonaws.com/uifaces/faces/twitter/adhamdannaway/128.jpg',
 subtitle: 'Vice Chairman'
 },
 ... // more items
]
keyExtractor = (item, index) => index.toString()
renderItem = ({ item }) => (
 <ListItem
 title={item.name}
 subtitle={item.subtitle}
 leftAvatar={{
 source: item.avatar_url && { uri: item.avatar_url },
 title: item.name[0]
 }}
 bottomDivider
 chevron
 />
)
render () {
 return (
 <FlatList
 keyExtractor={this.keyExtractor}
 data={list}
 renderItem={this.renderItem}
 />
 )
}
ListItem implemented with custom View for Subtitle
import { ListItem } from 'react-native-elements'
render () {
 return (
 <ListItem
 title='Limited supply! Its like digital gold!'
 subtitle={
 <View style={styles.subtitleView}>
 <Image source={require('../images/rating.png')} style={styles.ratingImage}/>
 <Text style={styles.ratingText}>5 months ago</Text>
 </View>
 }
 leftAvatar={{ source: require('../images/avatar1.jpg') }}
 />
 )
}
styles = StyleSheet.create({
 subtitleView: {
 flexDirection: 'row',
 paddingLeft: 10,
 paddingTop: 5
 },
 ratingImage: {
 height: 19.21,
 width: 100
 },
 ratingText: {
 paddingLeft: 10,
 color: 'grey'
 }
})
Badges

Example badge usage
<ListItem
 ...
 badge={{ value: 3, textStyle: { color: 'orange' }, containerStyle: { marginTop: -20 } }}
/>
Linear gradient + Scale feedback

import TouchableScale from 'react-native-touchable-scale'; // https://github.com/kohver/react-native-touchable-scale
import LinearGradient from 'react-native-linear-gradient'; // Only if no expo
<ListItem
 Component={TouchableScale}
 friction={90} //
 tension={100} // These props are passed to the parent component (here TouchableScale)
 activeScale={0.95} //
 linearGradientProps={{
 colors: ['#FF9800', '#F44336'],
 start: [1, 0],
 end: [0.2, 0],
 }}
 ViewComponent={LinearGradient} // Only if no expo
 leftAvatar={{ rounded: true, source: { uri: avatar_url } }}
 title="Chris Jackson"
 titleStyle={{ color: 'white', fontWeight: 'bold' }}
 subtitleStyle={{ color: 'white' }}
 subtitle="Vice Chairman"
 chevron={{ color: 'white' }}
/>;
Props
Also receives all TouchableHighlight props
ComponentcontainerStylecontentContainerStylerightContentContainerStylechevroncheckmarkonPressonLongPresstitletitleStyletitlePropssubtitlesubtitleStylesubtitlePropsrightTitlerightTitleStylerightTitlePropsrightSubtitlerightSubtitleStylerightSubtitlePropsleftIconrightIconleftAvatarrightAvatarleftElementrightElementswitchinputbuttonGroupcheckBoxbadgedisableddisabledStyletopDividerbottomDividerViewComponentpad
Reference
Component
replace element with custom element (optional)
| Type | Default | 
|---|---|
| View or TouchableHighlight (default) if onPress method is added as prop | component | 
containerStyle
additional main container styling (optional)
| Type | Default | 
|---|---|
| object (style) | none | 
contentContainerStyle
additional wrapper styling (title and subtitle container)
| Type | Default | 
|---|---|
| object (style) | none | 
rightContentContainerStyle
additional wrapper styling (right title and subtitle container)
| Type | Default | 
|---|---|
| object (style) | none | 
chevron
set it to true or custom icon props if you want a chevron (optional)
| Type | Default | 
|---|---|
| boolean OR {...Icon props} OR React element or component | none | 
checkmark
set it to true or custom icon props if you want a checkmark (optional)
| Type | Default | 
|---|---|
| boolean OR {...Icon props} OR React element or component | none | 
onPress
onPress method for link (optional)
| Type | Default | 
|---|---|
| function | none | 
onLongPress
onLongPress method for link (optional)
| Type | Default | 
|---|---|
| function | none | 
title
Main title of list item
| Type | Default | 
|---|---|
| string OR React element | none | 
titleStyle
Add additional styling
| Type | Default | 
|---|---|
| Text style | none | 
titleProps
provide all props from react-native Text component
| Type | Default | 
|---|---|
| {...Text props} | none | 
subtitle
subtitle text or custom view (optional)
| Type | Default | 
|---|---|
| string OR React element | none | 
subtitleStyle
Add additional styling
| Type | Default | 
|---|---|
| Text style | none | 
subtitleProps
provide all props from react-native Text component
| Type | Default | 
|---|---|
| {...Text props} | none | 
rightTitle
Show up a title on the right side of the list item
| Type | Default | 
|---|---|
| string OR React element | none | 
rightTitleStyle
add additional styling
| Type | Default | 
|---|---|
| Text style | none | 
rightTitleProps
provide all props from react-native Text component
| Type | Default | 
|---|---|
| {...Text props} | none | 
rightSubtitle
Show up a subtitle on the right side of the list item
| Type | Default | 
|---|---|
| string OR React element | none | 
rightSubtitleStyle
Add additional styling
| Type | Default | 
|---|---|
| Text style | none | 
rightSubtitleProps
provide all props from react-native Text component
| Type | Default | 
|---|---|
| {...Text props} | none | 
leftIcon
displays an icon on the left (optional)
| Type | Default | 
|---|---|
| {...Icon props} OR component  | none | 
rightIcon
displays an icon on the right (optional)
| Type | Default | 
|---|---|
| {...Icon props} OR component  | none | 
leftAvatar
displays an Avatar on the left (optional)
| Type | Default | 
|---|---|
| {...Avatar props} OR component  | none | 
rightAvatar
displays an Avatar on the right (optional)
| Type | Default | 
|---|---|
| View style (object){...Avatar props} OR component  | none | 
leftElement
Add any element on the left side of the list item
| Type | Default | 
|---|---|
| React element | none | 
rightElement
Add any element on the right side of the list item
| Type | Default | 
|---|---|
| React element | none | 
switch
add a switch to the right side. (object with the props of the react-native Switch component)
| Type | Default | 
|---|---|
| {...Switch props} | none | 
input
add an Input on the right side (object with the props of the React Native Elements Input component)
| Type | Default | 
|---|---|
| {...Input props} | none | 
buttonGroup
add a button group on the right side (object with the props of the React Native Elements ButtonGroup component)
| Type | Default | 
|---|---|
| {...ButtonGroup props} | none | 
checkBox
add a checkbox on the right side (object with the props of the React Native Elements CheckBox component)
| Type | Default | 
|---|---|
| {...CheckBox props} | none | 
badge
add a badge on the right side (object with the props of the React Native Elements Badge component)
| Type | Default | 
|---|---|
| {...Badge props} | none | 
disabled
If true the user won't be able to perform any action on the list item.
| Type | Default | 
|---|---|
| boolean | none | 
disabledStyle
Specific styling to be used when list item is disabled.
| Type | Default | 
|---|---|
| object (style) | none | 
topDivider
Add divider at the top of the list item
| Type | Default | 
|---|---|
| boolean | false | 
bottomDivider
Add divider at the bottom of the list item
| Type | Default | 
|---|---|
| boolean | false | 
ViewComponent
Container for linear gradient (for non-expo user)
| Type | Default | 
|---|---|
| component | View | 
pad
adds spacing between the leftComponent, the title component & right component
| Type | Default | 
|---|---|
| number | 16 |