2016-03-25 17 views
1

ListViewに何百ものアイテムをリストアップしようとしています。AndroidプラットフォームでReact-Nativeを使用しています。 react-nativeのバージョンは0.22です。ページのロードが、私はデータのバッチを取得し、次のようにデータソースを気力するとonEndReachedは、ReactNativeを使用してAndroidでListViewを使用して期待通りに機能しません。

<ListView dataSource={dataSource} 
         onEndReached={onEndReached} 
         renderRow={this.renderRow.bind(this)}/> 

onEndReached(page) { 
    let {dataSource = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2})} = this.state; 

    return myService.search({page}) 
     .then(newRows => { 
      this.setState({ 
       dataSource: dataSource.cloneWithRows(newRows), 
       page: page 
      }); 
     }); 
} 

renderRow(row){console.log(row.id); // This is printed for all rows regardless of whether it is displayed on the screen or not} 

基本的に何が起こるかである、onEndReached機能は時々わずかにスライドまたはでトリガされたここに私のListViewコンポーネントですジェスチャーがなくても。この関数は、dataSourceに与えられたすべての行がレンダリングされたときにのみ呼び出されると考えました。奇妙なことに、私のrenderRow関数は、画面に表示された行だけでなく、すべての行に対して呼び出されることがわかります。私はscrollRenderAheadDistanceを使ってみましたが、役に立たなかった。

誰かが私に間違っていることを教えてもらえますか?

+0

問題は、リストビューをScrollViewの下に置いて、その動作が壊れていたことです。 ScrollViewの外でListViewを削除すると、期待どおりに動作するようになりました。 – cubbuk

答えて

1

問題は私がListViewの下にScrollViewの下にあって、その動作を壊していたことでした。 ListViewScrollViewの外に削除した後、期待どおりに動作するようになりました。

関連する問題