11import React , { Component } from 'react' ;
2- import { View , Text , StyleSheet , ListView } from 'react-native' ;
2+ import { View , Text , StyleSheet , ListView , FlatList } from 'react-native' ;
33import StepIndicator from 'react-native-step-indicator' ;
44import dummyData from './data' ;
55
@@ -29,11 +29,10 @@ export default class VerticalStepIndicator extends Component {
2929 constructor ( ) {
3030 super ( ) ;
3131
32- const ds = new ListView . DataSource ( { rowHasChanged : ( r1 , r2 ) => r1 !== r2 } ) ;
3332 this . state = {
34- dataSource : ds . cloneWithRows ( dummyData . data ) ,
3533 currentPage :0
3634 } ;
35+ this . viewabilityConfig = { itemVisiblePercentThreshold : 40 }
3736 }
3837
3938 render ( ) {
@@ -48,27 +47,32 @@ export default class VerticalStepIndicator extends Component {
4847 labels = { dummyData . data . map ( item => item . title ) }
4948 />
5049 </ View >
51- < ListView
52- dataSource = { this . state . dataSource }
53- renderRow = { this . renderPage }
54- onChangeVisibleRows = { this . getVisibleRows }
55- />
50+ < FlatList
51+ style = { { flexGrow :1 } }
52+ data = { dummyData . data }
53+ renderItem = { this . renderPage }
54+ onViewableItemsChanged = { this . onViewableItemsChanged }
55+ viewabilityConfig = { this . viewabilityConfig }
56+ />
5657 </ View >
5758 ) ;
5859 }
5960
6061 renderPage = ( rowData ) => {
62+ const item = rowData . item
6163 return (
6264 < View style = { styles . rowItem } >
63- < Text style = { styles . title } > { rowData . title } </ Text >
64- < Text style = { styles . body } > { rowData . body } </ Text >
65+ < Text style = { styles . title } > { item . title } </ Text >
66+ < Text style = { styles . body } > { item . body } </ Text >
6567 </ View >
6668 )
6769 }
6870
69- getVisibleRows = ( visibleRows ) => {
70- const visibleRowNumbers = Object . keys ( visibleRows . s1 ) . map ( ( row ) => parseInt ( row ) ) ;
71- this . setState ( { currentPage :visibleRowNumbers [ 0 ] } )
71+ onViewableItemsChanged = ( { viewableItems, changed } ) => {
72+ const visibleItemsCount = viewableItems . length ;
73+ if ( visibleItemsCount != 0 ) {
74+ this . setState ( { currentPage :viewableItems [ visibleItemsCount - 1 ] . index } )
75+ } ;
7276 }
7377}
7478
0 commit comments