Listview for React

Updated on May 17, 2021
Learn More

Advanced list view component with gesture, swipe and drag & drop support.

Use it along Mobiscroll forms, pages or in any web or mobile hybrid app. Suited for small to large screens.

Shipping with useful features for a refined UX, including:

  • Support for alternating row color
  • Use it with single, multi-line text or custom content
  • Render cards instead of full-width rows
  • Enhance content with images, avatars and icons
  • Built-in support for sorting and ordering
  • Multiple data-source support
  • Load on demand capabilities
  • Top positioned sticy header for segmenting the list
  • Simple to advanced grouping capabilities
  • CRUD with undo functionality
  • Full-blown gesture support
  • Hierarchical listviews with variable depth
  • Multiple theme support



As part of Gesture enabled listview it can be picked up with the Framework and Complete licenses or with the component license.


Listview available for other frameworks.

Viewing demos & code for

React Listview Content

Multiline text
    • Electric Smartscooter

      Gogoro Smartscooter is world’s first connected two-wheeled electric vehicle.

    • The Solar Bike

      An electric bike that incorporates solar panels and producing enough energy to use it 30 km a day.

    • Smallest Quadricopter

      The Dutch gadget-manufacturer TRNDlabs reveals the smallest quadricopter of the world.

    • Glow Headphones

      Discover the world’s first laser headphones that pulse to the music.

    Custom CSS
      • The Intouchables (2011) 8.5
      • The Shawshank Redemption (1994) 9.2
      • Fight Club (1999) 8.8
      • Inception (2010) 8.7
      Cards
        • Netflix
          Sherlock Series 3 is now avalable on Netflix
        • Angry birds
          Don't forget your daily Arena entry.
        • Candycam
          A new update is available!

        Listview - Basic

        Change demo
        Basic
        React Listview demo for creating a simple list of items. Add stripes for alternating background colors of list items. For React and Ionic React.
        Copy code

        Listview - Content

        Change demo
        Content
        React Listview demo for rendering different types of content. Use it for multi-line text, cards or any content with custom CSS. For React and Ionic React.
        Copy code
        import mobiscroll from '@mobiscroll/react';
        import '@mobiscroll/react/dist/css/mobiscroll.min.css';
        
        mobiscroll.settings = {
            theme: 'ios',
            themeVariant: 'light'
        };
        
        class MultilineItem extends React.Component {
            render() {
                return <li> 
                    <h3>{this.props.item.title}</h3>
                    <p>{this.props.item.text}</p>
                </li>;
            }
        }
        
        class CustomItem extends React.Component {
            render() {
                return <li> 
                    {this.props.item.title}
                    <span className="md-star-icon mbsc-ic mbsc-ic-star3">
                        {this.props.item.rate}
                    </span>
                </li>;
            }
        }
        
        class CardsItem extends React.Component {
            render() {
                return <li> 
                    <mobiscroll.Card> 
                        <mobiscroll.CardContent>
                            <mobiscroll.Avatar src={this.props.item.img} />
                            <mobiscroll.CardTitle>
                                {this.props.item.title}
                            </mobiscroll.CardTitle>
                            <mobiscroll.CardSubtitle>
                                {this.props.item.text}
                            </mobiscroll.CardSubtitle>
                        </mobiscroll.CardContent>
                    </mobiscroll.Card>
                </li>;
            }
        }
        
        class App extends React.Component {
            constructor(props) {
                super(props);
        
                this.state = {
                    multiline: [{
                        id: 1,
                        title: 'Electric Smartscooter',
                        text: 'Gogoro Smartscooter is world’s first connected two-wheeled electric vehicle.'
                    }, {
                        id: 2,
                        title: 'The Solar Bike',
                        text: 'An electric bike that incorporates solar panels and producing enough energy to use it 30 km a day'
                    }, {
                        id: 3,
                        title: 'Smallest Quadricopter',
                        text: 'The Dutch gadget-manufacturer TRNDlabs reveals the smallest quadricopter of the world'
                    }, {
                        id: 4,
                        title: 'Glow Headphones',
                        text: 'Discover the world’s first laser headphones that pulse to the music'
                    }],
                    custom: [{
                        id: 1,
                        title: 'The Intouchables (2011)',
                        rate: 8.5
                    }, {
                        id: 2,
                        title: 'The Shawshank Redemption(1994)',
                        rate: 9.2
                    }, {
                        id: 3,
                        title: 'Fight Club(1999)',
                        rate: 8.8
                    }, {
                        id: 4,
                        title: 'Inception(2010)',
                        rate: 8.7
                    }],
                    cards: [{
                        id: 1,
                        title: 'Netflix',
                        text: 'Sherlock Series 3 is now avalable on Netflix',
                        img: 'https://img.mobiscroll.com/demos/netflix.png'
                    }, {
                        id: 2,
                        title: 'Angry birds',
                        text: 'Dont forget your daily Arena entry.',
                        img: 'https://img.mobiscroll.com/demos/angrybirds.png'
                    }, {
                        id: 3,
                        title: 'Candycam',
                        text: 'A new update is available!',
                        img: 'https://img.mobiscroll.com/demos/candycam.png'
                    }]
                };
            }
            
            render() {
                return (
                    <mobiscroll.Form>
                        <mobiscroll.FormGroup>
                            <mobiscroll.FormGroupTitle>Multiline text</mobiscroll.FormGroupTitle>
                            <mobiscroll.Listview
                                itemType={MultilineItem}
                                enhance={true}
                                swipe={false}
                                data={this.state.multiline}
                            />
                        </mobiscroll.FormGroup>
                        <mobiscroll.FormGroup>
                            <mobiscroll.FormGroupTitle>Custom CSS</mobiscroll.FormGroupTitle>
                            <mobiscroll.Listview
                                 className="md-custom-listview"
                                itemType={CustomItem}
                                enhance={true}
                                swipe={false}
                                data={this.state.custom}
                            />
                        </mobiscroll.FormGroup>
                        <mobiscroll.FormGroup>
                            <mobiscroll.FormGroupTitle>Cards</mobiscroll.FormGroupTitle>
                            <mobiscroll.Listview
                                 className="mbsc-card-list"
                                itemType={CardsItem} 
                                swipe={false}
                                data={this.state.cards}
                            />
                        </mobiscroll.FormGroup>
                </mobiscroll.Form>
                );
            }
        }
        
        
        import mobiscroll from '@mobiscroll/react';
        import '@mobiscroll/react/dist/css/mobiscroll.min.css';
        
        interface DemoProps {
            item?: any;
        }
        
        interface DemoState {
            multiline?: any;
            custom?: any;
            cards?: any;
        }
        
        mobiscroll.settings = {
            theme: 'ios',
            themeVariant: 'light'
        };
        
        class MultilineItem extends React.Component< DemoProps, DemoState > {
            render() {
                return <li> 
                    <h3>{this.props.item.title}</h3>
                    <p>{this.props.item.text}</p>
                </li>;
            }
        }
        
        class CustomItem extends React.Component< DemoProps, DemoState > {
            render() {
                return <li> 
                    {this.props.item.title}
                    <span className="md-star-icon mbsc-ic mbsc-ic-star3">
                        {this.props.item.rate}
                    </span>
                </li>;
            }
        }
        
        class CardsItem extends React.Component< DemoProps, DemoState > {
            render() {
                return <li> 
                    <mobiscroll.Card> 
                        <mobiscroll.CardContent>
                            <mobiscroll.Avatar src={this.props.item.img} />
                            <mobiscroll.CardTitle>
                                {this.props.item.title}
                            </mobiscroll.CardTitle>
                            <mobiscroll.CardSubtitle>
                                {this.props.item.text}
                            </mobiscroll.CardSubtitle>
                        </mobiscroll.CardContent>
                    </mobiscroll.Card>
                </li>;
            }
        }
        
        class App extends React.Component< DemoProps, DemoState > {
            constructor(props: DemoProps) {
                super(props);
        
                this.state = {
                    multiline: [{
                        id: 1,
                        title: 'Electric Smartscooter',
                        text: 'Gogoro Smartscooter is world’s first connected two-wheeled electric vehicle.'
                    }, {
                        id: 2,
                        title: 'The Solar Bike',
                        text: 'An electric bike that incorporates solar panels and producing enough energy to use it 30 km a day'
                    }, {
                        id: 3,
                        title: 'Smallest Quadricopter',
                        text: 'The Dutch gadget-manufacturer TRNDlabs reveals the smallest quadricopter of the world'
                    }, {
                        id: 4,
                        title: 'Glow Headphones',
                        text: 'Discover the world’s first laser headphones that pulse to the music'
                    }],
                    custom: [{
                        id: 1,
                        title: 'The Intouchables (2011)',
                        rate: 8.5
                    }, {
                        id: 2,
                        title: 'The Shawshank Redemption(1994)',
                        rate: 9.2
                    }, {
                        id: 3,
                        title: 'Fight Club(1999)',
                        rate: 8.8
                    }, {
                        id: 4,
                        title: 'Inception(2010)',
                        rate: 8.7
                    }],
                    cards: [{
                        id: 1,
                        title: 'Netflix',
                        text: 'Sherlock Series 3 is now avalable on Netflix',
                        img: 'https://img.mobiscroll.com/demos/netflix.png'
                    }, {
                        id: 2,
                        title: 'Angry birds',
                        text: 'Dont forget your daily Arena entry.',
                        img: 'https://img.mobiscroll.com/demos/angrybirds.png'
                    }, {
                        id: 3,
                        title: 'Candycam',
                        text: 'A new update is available!',
                        img: 'https://img.mobiscroll.com/demos/candycam.png'
                    }]
                };
            }
            
            render() {
                return (
                    <mobiscroll.Form>
                        <mobiscroll.FormGroup>
                            <mobiscroll.FormGroupTitle>Multiline text</mobiscroll.FormGroupTitle>
                            <mobiscroll.Listview
                                itemType={MultilineItem}
                                enhance={true}
                                swipe={false}
                                data={this.state.multiline}
                            />
                        </mobiscroll.FormGroup>
                        <mobiscroll.FormGroup>
                            <mobiscroll.FormGroupTitle>Custom CSS</mobiscroll.FormGroupTitle>
                            <mobiscroll.Listview
                                 className="md-custom-listview"
                                itemType={CustomItem}
                                enhance={true}
                                swipe={false}
                                data={this.state.custom}
                            />
                        </mobiscroll.FormGroup>
                        <mobiscroll.FormGroup>
                            <mobiscroll.FormGroupTitle>Cards</mobiscroll.FormGroupTitle>
                            <mobiscroll.Listview
                                 className="mbsc-card-list"
                                itemType={CardsItem} 
                                swipe={false}
                                data={this.state.cards}
                            />
                        </mobiscroll.FormGroup>
                </mobiscroll.Form>
                );
            }
        }
        
        
        <div id="content"></div>
        .demo-main-cont.demo-comp-listview { padding: 0; }
        .demo-comp-listview .demo-note { margin: 10px; }
        
        .md-custom-listview .mbsc-lv-item {
            background: #c3e8fb;
            padding-top: 30px;
            padding-bottom: 30px;
        }
        
        .md-custom-listview .md-star-icon {
            float: right;
            font-weight: bold;
            color: #ff8400;
        }
        
        .md-custom-listview .md-star-icon:before {
            margin-right: 5px;
        }
        Show more code

        Listview - Image/Icon/Avatar

        Change demo
        Image/Icon/Avatar
        React Listview image demo for rendering content with regular images, icons and avatars. Customize it with custom CSS. For React and Ionic React.
        Copy code

        Listview - Selecting items

        Change demo
        Selecting items
        React Listview item selection example. Select a single item or enable multiple selection for batch operations. For React and Ionic React.
        Copy code

        Listview - Sorting & ordering

        Change demo
        Sorting & ordering
        React Listview reorder demo. Grab and sort from drag handle on the left or right side, or tap/click and hold to sort. For React and Ionic React.
        Copy code

        Listview - Sticky header

        Change demo
        Sticky header
        React Listview demo with sticky header. List out names or contacts grouped alphabetically with the first letter on top. For React and Ionic React.
        Copy code

        Listview - Grouping

        Change demo
        Grouping
        React Listview demo with group headers. Use it to logically segment and group items without creating multiple lists. For React and Ionic React.
        Copy code

        Listview - Create, Read, Update, Delete

        Change demo
        Create, Read, Update, Delete
        React Listview demo with CRUD operations & swipe actions. Slide right to update and left to delete items. For React and Ionic React.
        Copy code

        Listview - Remove/Undo

        Change demo
        Remove/Undo
        React Listview demo with swipe-away delete and built-in undo functionality. Use it for laying out notifications or any data. For React and Ionic React.
        Copy code

        Listview - Swipe actions

        Change demo
        Swipe actions
        React Listview demo with swipe revealing actions. Render an action list or action menu when sliding items left and right. For React and Ionic React.
        Copy code

        Listview - Hierarchy

        Change demo
        Hierarchy
        React Listview with multi-level hierarchy and drill-down interface. Featuring images, icons and text. For React and Ionic React.
        Copy code

        Listview - Checklist

        Change demo
        Checklist
        React Drag & Drop checklist/tasklist with swipe actions to add/remove items from todo listview. Sorting is supported. For React and Ionic React.
        Copy code

        Listview - Filtering

        Change demo
        Filtering
        React Listview demo with dynamic data and live filtering. Add and remove items on the fly or reload the full list. For React and Ionic React.
        Copy code

        Listview - Data sources

        Change demo
        Data sources
        React Listview demo with different ways of getting and passing data. Supporting hardcoded lists, dynamic and remote data. For React and Ionic React.
        Copy code

        Listview - Load on demand

        Change demo
        Load on demand
        React Listview load on demand demo. Load data from a REST service and populate the list as users scroll content. For React and Ionic React.
        Copy code

        Listview - Load more

        Change demo
        Load more
        React Listview demo with load more button for loading additional items from a REST service. Get and display records from JSON. For React and Ionic React.
        Copy code

        Listview - Master-detail view

        Change demo
        Master-detail view

        Build a two pane master-detail view with the help of the listview. Use the grid layout to set up the two columns - left side for a list of names, right side for showing the details. If you want to get into the details you could even hide the first column and build a drawer or use a hamburger menu for the master list.

        Use the navigation component for the tabs and cards for building the layout of the details view.

        Want to learn more about building responsive layouts?  Check out the grid layout →
        Copy code

        Listview - Event handlers

        Change demo
        Event handlers
        React Listview demo with event hooks for deep integration and custom functionality. With source code. For React and Ionic React.
        Clear event log
        EVENTS FIRED: 
        Copy code

        Listview - Quick Navigation

        Change demo
        Quick Navigation
        React Listview demo with quick access to list segments. Alphabetically group items and provide a tab list for selection. For React and Ionic React.
        Copy code

        Looking for something you didn't see or have a sales question?
        Ask us about it, we're here to help.

        Customize & try demos locally
        Sign in or start your free trial

        What framework are you using?

        Javascript
        jQuery
        AngularJS
        Angular
        React
        Other
        Ionic Angular
        Email address

        Install demo in your app
        Follow this quick, two minute install guide
        Close window

        Step 1.Install the Mobiscroll CLI from npm

        Copy command
        $ npm install -g @mobiscroll/cli

        The CLI makes configuring your apps super simple 👍

        Step 2.Run the following command in the root folder of your Ionic project

        Copy command
        $ mobiscroll config ionic --version=4

        You will be prompted to log in with your mobiscroll account. Set your password here

        Step 3.Copy the code into your app.

        Copy TS
        Copy HTML
        Copy CSS
        Copy Module

        Step 4.Run ionic serve in the root folder of your app 🎉

        Copy command
        $ ionic serve

        And voilà, everything should be running smoothly.

        Install demo in your app
        Follow this quick, two minute install guide
        Close window

        Step 1.Install the Mobiscroll CLI from npm

        Copy command
        $ npm install -g @mobiscroll/cli

        The CLI makes configuring your apps super simple 👍

        Step 2.Run the following command in the root folder of your Ionic project

        Copy command
        $ mobiscroll config ionic --version=4

        You will be prompted to log in with your mobiscroll account. Set your password here

        Step 3.Copy the code into your app.

        Copy TSX
        Copy CSS

        Step 4.Run ionic serve in the root folder of your app 🎉

        Copy command
        $ ionic serve

        And voilà, everything should be running smoothly.

        Customize & try demos locally
        How would you like to do it?
        Install demo in your app
        Follow this quick, two minute install guide
        Close window

        Step 1.Install the Mobiscroll CLI from npm

        Copy command
        $ npm install -g @mobiscroll/cli

        The CLI makes configuring your apps super simple 👍

        Step 2.Run the following command in the root folder of your Angular project

        Copy command
        $ mobiscroll config angular --version=4

        You will be prompted to log in with your mobiscroll account. Set your password here

        Step 3.Copy the code into your app. HTML goes into the markup, TS into Typescript.

        Copy TS
        Copy HTML
        Copy CSS
        Copy Module

        Step 4.Run ng serve in the root folder of your app 🎉

        Copy command
        $ ng serve

        And voilà, everything should be running smoothly.

        Thanks for downloading
        Try and customize the app locally

        Extract the zip file and run the project like any Ionic app. Make sure to have Ionic CLI installed and open the terminal in the app root folder.

        Step 1. Run in root folder
        $ npm install
        Step 2. Start the app
        $ ionic serve

        Let us know if we can help and enjoy!

        Thanks for downloading
        Customize demos locally

        We have set up a trial so that you can try the demos locally.

        Extract the zip file and open the demo in your favorite browser. To install Mobiscroll in your project follow instructions from this page.


        Let us know if we can help and enjoy! 👍

        Thanks for downloading
        Customize demos locally

        Please extract the zip file and run the project like any Angular CLI app. Make sure to have the Angular CLI installed.

        For installation and usage, extract the zip file and open a terminal window and follow these steps.

        Step 1. Run in root folder
        $ npm install
        Step 2. Start the app
        $ ng serve --open

        Let us know if we can help and enjoy! 👍

        Thanks for downloading
        Customize demos locally

        We have set up a trial so that you can try the demos locally.

        The easiest way to get started is to follow the installation steps and by grabbing the code directly from the demo page. Let us know if we can help and enjoy! 👍

        You'll find a fully functional Kitchen-sink Ionic app in the zip file.

        Thanks for downloading
        Customize demos locally

        We have set up a trial so that you can try the demos locally.

        The demos are using Babel's in-browser ES6 and JSX transformer.
        Extract the zip file and open the demo in your browser. To install Mobiscroll in your project follow instructions from this page.


        Let us know if we can help and enjoy! 👍

        Customize & try this demo locally
        Sign in or start your free trial

        We have to set you up with a trial for this to run 👍

        Email address

        Need to update your password?
        Demos
        Theme Select
        Mobiscroll
        Material
        Material Dark
        iOS
        iOS Dark
        Windows
        Windows Dark
        Language Locale
        See other demos and change options
        Theme
        Locale
        See other demos