listview的onChangeVisibleRows属性怎么使用?求代码



  • 我用listview展示列表数据,现在有个要求,是需要整个数据展示出来之后,页面上显示的是从我要指定的那个item'开始展示,列表要跳转到指定的item,我看listview有一个onChangeVisibleRows这个属性,说的就是这个意思,但是怎么写啊,我直接写onChangeVisibleRows={(visibleRows, changedRows)=>{console.log(1)}},这个都不执行呢,求教



  • 建议使用 rn0.43版本中新增加的 flatlist



  • @privatez 我不能换版本,我的版本固定0.39。2的,换了会导致其他第三方模块的不能使用



  • @kcmars 那就仔细看看listview的文档中的有一个scrollTo方法或许可以解决你的问题 listview



  • @privatez that.refs.listview.scrollTo({x:0,y:500,animated:false});我用了这个方法,在iOS上是对的,可是android上不执行这个方法,怎么回事呢



  • @kcmars 在android上数据占满一屏了吗?



  • @privatez 占满了的,所有的数据都是对的,就是不执行那个scrollto方法



  • @kcmars 整个页面的代码可以贴一下吗 主要是关于listview这块的



  • @privatez },function (ret,err) {
    hideProgress();
    if(ret){
    console.log(ret);
    let dataFuture = ret.data.dataFuture;//有效数据
    let dataFormerly = ret.data.dataFormerly ;//过期数据
    if(ret.status == 1){
    for(let i = 0; i < dataFuture.length; i++){
    that.data.push(dataFuture[i]);
    }
    for(let i = 0; i < dataFormerly.length; i++){
    that.data.push(dataFormerly[i]);
    }
    that.setState({
    dataSource:that.state.dataSource.cloneWithRows(that.data)
    });
    that.refs.listview.scrollTo({x:0,y:500,animated:false});
    }else{

                }
            }else{
                alert(JSON.stringify(err));
            }
        });
    

    我有两个数组,装了两个数据源,然后我一进来之后要将数据滚动到第二个数组的数据上去
    <ListView
    ref='listview'
    style={{flex:1}}
    initialListSize={5}
    pageSize={10}
    dataSource={this.state.dataSource}
    renderHeader={()=>{
    return(
    this.state.isHeader==true?
    <View style={{flex:1,alignItems:'center'}}>
    <Image style={{width:200,height:200,resizeMode:'stretch'}} source={require('../../../../images/truckNoMoreSouce.png')}/>
    </View>
    :
    <View/>
    )
    }}
    renderRow={this.initRow.bind(this)}
    refreshControl={
    <RefreshControl
    refreshing={this.state.isRefreshing}
    onRefresh={this.onRefresh.bind(this)}
    tintColor="#ff0000"
    title="加载中..."
    titleColor="#00ff00"
    colors={['#ff0000', '#00ff00', '#0000ff']}
    progressBackgroundColor="#ffff00"
    />
    }
    onEndReached={this.loadMore.bind(this)}
    onEndReachedThreshold={4}
    enableEmptySections={true}
    renderFooter={()=>{
    listview没有什么特殊的地方,数据就是在datasource里面,通过listview的onRefresh={this.onRefresh.bind(this)}这个方法直接获取的



  • @kcmars 你是不是在 componentDidMount 中调用的 scrollTo 方法?



  • @privatez 不是,你看我的代码,我直接在获取数据之后,并把数据添加到数据源数组里面去了后,直接就调用的这个方法


登录后回复