Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

A new InfiniteList that compose react-virtualized/InfiniteLoader with the react-native/VirtualizedList component, and a drop replacement component of react-native-gifted-listview

License

Notifications You must be signed in to change notification settings

iwater/react-native-infinite-virtualized-list

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

13 Commits

Repository files navigation

Gifted ListView

A new InfiniteList for react-native 0.43+ that compose react-virtualized/InfiniteLoader with the new react-native/VirtualizedList component, and a drop replacement component of react-native-gifted-listview

Changelog

0.1.5

  • Pull-to-refresh

0.1.4

  • react-native 0.43.0+

0.1.0

  • the first version

GiftedListView Simple example

below code was take from react-native-gifted-listview just replace one line

var React = require('react-native');
var {
 StyleSheet,
 Text,
 View,
 TouchableHighlight
} = React;
// var GiftedListView = require('react-native-gifted-listview');
import { GiftedListView } from 'react-native-infinite-virtualized-list'
var Example = React.createClass({
 /**
 * Will be called when refreshing
 * Should be replaced by your own logic
 * @param {number} page Requested page to fetch
 * @param {function} callback Should pass the rows
 * @param {object} options Inform if first load
 */
 _onFetch(page = 1, callback, options) {
 setTimeout(() => {
 var rows = ['row '+((page - 1) * 3 + 1), 'row '+((page - 1) * 3 + 2), 'row '+((page - 1) * 3 + 3)];
 if (page === 3) {
 callback(rows, {
 allLoaded: true, // the end of the list is reached
 });
 } else {
 callback(rows);
 }
 }, 1000); // simulating network fetching
 },
 /**
 * When a row is touched
 * @param {object} rowData Row data
 */
 _onPress(rowData) {
 console.log(rowData+' pressed');
 },
 /**
 * Render a row
 * @param {object} rowData Row data
 */
 _renderRowView(rowData) {
 return (
 <TouchableHighlight
 style={styles.row}
 underlayColor='#c8c7cc'
 onPress={() => this._onPress(rowData)}
 >
 <Text>{rowData}</Text>
 </TouchableHighlight>
 );
 },
 render() {
 return (
 <View style={styles.container}>
 <View style={styles.navBar} />
 <GiftedListView
 rowView={this._renderRowView}
 onFetch={this._onFetch}
 firstLoader={true} // display a loader for the first fetching
 pagination={true} // enable infinite scrolling using touch to load more
 refreshable={true} // enable pull-to-refresh for iOS and touch-to-refresh for Android
 withSections={false} // enable sections
 customStyles={{
 paginationView: {
 backgroundColor: '#eee',
 },
 }}
 refreshableTintColor="blue"
 keyExtractor={(item, index) => index} // you need this for VirtualizedList
 />
 </View>
 );
 }
});
var styles = {
 container: {
 flex: 1,
 backgroundColor: '#FFF',
 },
 navBar: {
 height: 64,
 backgroundColor: '#CCC'
 },
 row: {
 padding: 10,
 height: 44,
 },
};

InfiniteVirtualizedList Advanced example

See src/GiftedVirtualizedList.js

Installation

npm install react-native-infinite-virtualized-list --save

Features

  • Pull-to-refresh
  • Infinite scrolling
  • Loader for first display
  • Default view when no content to display
  • Customizable (see advanced example)

License

MIT

About

A new InfiniteList that compose react-virtualized/InfiniteLoader with the react-native/VirtualizedList component, and a drop replacement component of react-native-gifted-listview

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

AltStyle によって変換されたページ (->オリジナル) /