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 Listview for React

Render a simple list of items with or without stripes.
Simple list
    • The Shawshank Redemption (1994)
    • The Godfather (1972)
    • The Godfather: Part II (1974)
    • The Dark Knight (2008)
    • 12 Angry Men (1957)
    • Schindler's List (1993)
    • The Lord of the Rings: The Return of the King (2003)
    • Pulp Fiction (1994)
    Striped list
      • The Good, the Bad and the Ugly (1966)
      • Fight Club (1999)
      • The Lord of the Rings: The Fellowship of the Ring (2001)
      • Forrest Gump (1994)
      • Star Wars: Episode V - The Empire Strikes Back (1980)
      • Inception (2010)
      • The Lord of the Rings: The Two Towers (2002)
      • One Flew Over the Cuckoo's Nest (1975)

      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
      import mobiscroll from '@mobiscroll/react';
      import '@mobiscroll/react/dist/css/mobiscroll.min.css';
      
      mobiscroll.settings = {
          theme: 'ios',
          themeVariant: 'light'
      };
      
      class ListItem extends React.Component {
          render() {
              return <li>{this.props.item.title}</li>;
          }
      }
      
      class ListItem2 extends React.Component {
          render() {
              return <li>{this.props.item.title}</li>;
          }
      }
      
      class App extends React.Component {
          constructor(props) {
              super(props);
      
              this.state = {
                  movies: [
                      { id: 1, title: 'The Shawshank Redemption (1994)' },
                      { id: 2, title: 'The Godfather (1972)' },
                      { id: 3, title: 'The Godfather: Part II (1974)' },
                      { id: 4, title: 'The Dark Knight (2008)' },
                      { id: 5, title: '12 Angry Men (1957)' },
                      { id: 6, title: 'Schindler\'s List (1993)' },
                      { id: 7, title: 'The Lord of the Rings: The Return of the King (2003)' },
                      { id: 8, title: 'Pulp Fiction (1994)' }
                  ],
                  moreMovies: [
                      { id: 1, title: 'The Good, the Bad and the Ugly (1966)' },
                      { id: 2, title: 'Fight Club (1999)' },
                      { id: 3, title: 'The Lord of the Rings: The Fellowship of the Ring (2001)' },
                      { id: 4, title: 'Forrest Gump (1994)' },
                      { id: 5, title: 'Star Wars: Episode V - The Empire Strikes Back (1980)' },
                      { id: 6, title: 'Inception (2010)' },
                      { id: 7, title: 'The Lord of the Rings: The Two Towers (2002)' },
                      { id: 8, title: 'One Flew Over the Cuckoo\'s Nest (1975)' }
                  ]
              };
          }
          render() {
              return (
                  <mobiscroll.Form>
                      <mobiscroll.FormGroup>
                          <mobiscroll.FormGroupTitle>Simple</mobiscroll.FormGroupTitle>
                          <mobiscroll.Listview
                              itemType={ListItem} 
                              data={this.state.movies}
                          />
                      </mobiscroll.FormGroup>
                      <mobiscroll.FormGroup>
                          <mobiscroll.FormGroupTitle>Striped</mobiscroll.FormGroupTitle>
                          <mobiscroll.Listview
                              itemType={ListItem2} 
                              data={this.state.moreMovies}
                              striped={true}
                          />
                      </mobiscroll.FormGroup>
                  </mobiscroll.Form>
              );
          }    
      }
      
      
      import mobiscroll from '@mobiscroll/react';
      import '@mobiscroll/react/dist/css/mobiscroll.min.css';
      
      interface DemoProps {
          item?: any;
      }
      
      interface DemoState {
          movies?: any;
          moreMovies?: any;
      }
      
      mobiscroll.settings = {
          theme: 'ios',
          themeVariant: 'light'
      };
      
      class ListItem extends React.Component< DemoProps, DemoState > {
          render() {
              return <li>{this.props.item.title}</li>;
          }
      }
      
      class ListItem2 extends React.Component< DemoProps, DemoState > {
          render() {
              return <li>{this.props.item.title}</li>;
          }
      }
      
      class App extends React.Component< DemoProps, DemoState > {
          constructor(props: DemoProps) {
              super(props);
      
              this.state = {
                  movies: [
                      { id: 1, title: 'The Shawshank Redemption (1994)' },
                      { id: 2, title: 'The Godfather (1972)' },
                      { id: 3, title: 'The Godfather: Part II (1974)' },
                      { id: 4, title: 'The Dark Knight (2008)' },
                      { id: 5, title: '12 Angry Men (1957)' },
                      { id: 6, title: 'Schindler\'s List (1993)' },
                      { id: 7, title: 'The Lord of the Rings: The Return of the King (2003)' },
                      { id: 8, title: 'Pulp Fiction (1994)' }
                  ],
                  moreMovies: [
                      { id: 1, title: 'The Good, the Bad and the Ugly (1966)' },
                      { id: 2, title: 'Fight Club (1999)' },
                      { id: 3, title: 'The Lord of the Rings: The Fellowship of the Ring (2001)' },
                      { id: 4, title: 'Forrest Gump (1994)' },
                      { id: 5, title: 'Star Wars: Episode V - The Empire Strikes Back (1980)' },
                      { id: 6, title: 'Inception (2010)' },
                      { id: 7, title: 'The Lord of the Rings: The Two Towers (2002)' },
                      { id: 8, title: 'One Flew Over the Cuckoo\'s Nest (1975)' }
                  ]
              };
          }
          render() {
              return (
                  <mobiscroll.Form>
                      <mobiscroll.FormGroup>
                          <mobiscroll.FormGroupTitle>Simple</mobiscroll.FormGroupTitle>
                          <mobiscroll.Listview
                              itemType={ListItem} 
                              data={this.state.movies}
                          />
                      </mobiscroll.FormGroup>
                      <mobiscroll.FormGroup>
                          <mobiscroll.FormGroupTitle>Striped</mobiscroll.FormGroupTitle>
                          <mobiscroll.Listview
                              itemType={ListItem2} 
                              data={this.state.moreMovies}
                              striped={true}
                          />
                      </mobiscroll.FormGroup>
                  </mobiscroll.Form>
              );
          }    
      }
      
      
      <div id="content"></div>
      .demo-main-cont.demo-comp-listview { padding: 0; }
      .demo-comp-listview .demo-note { margin: 10px; }
      
      
      Show more 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

      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