android listview 下拉刷新禁止点击,React native ListView 增加顶部下拉刷新和底下点击刷新示例...

1. 底部点击刷新

1.1 先增加一个按钮

4d5e8d6b7f93d32504a3f3ed61b4feed.png

render() {

if(!this.state.data){

return(

Loading...

)

}else{

return(

refreshControl={

refreshing = {false}

onRefresh = {this.reloadWordData.bind(this)}

/>

}

dataSource={this.state.data}

renderRow={(rowData)=>this.renderRow(rowData)}

renderFooter={this.renderFooter.bind(this)}

>

);

}

}

renderFooter(){

return (

onPress={this.addMoreOnFoot.bind(this)}

title="点击载入更多"

/>

)

}

给ListView 增加一个renderFooter 方法来绘制底部元素。在里面显示一个按钮。

按钮处理逻辑:

addMoreOnFoot(){

// alert('addMoreOnFoot')

// console.log('addMoreOnFoot')

const url = 'http://127.0.0.1/getFootContent?lastid=' + this.state.footLastId + '&count=20&isTop=0'

fetch(url)

.then((response)=>response.json())

.then((jsondata)=>{

if (jsondata.data && jsondata.data.length > 0){

const rowData = this.state.jsondata.concat(jsondata.data);

this.setState({

footLastId:jsondata.data[jsondata.data.length - 1]['id'],

jsondata:rowData,

data:new ListView.DataSource({rowHasChanged:(r1, r2) => r1 != r2}).cloneWithRows(rowData),

})

}

})

.catch((error)=>{

alert(error);

});

}

点击后进行网络处理,把之前最后一条id也传给服务器,让服务器返回这个id后面的20条记录。然后重新setState即可。

2. 头部下拉刷新

ListView中增加RefeshControl

render() {

if(!this.state.data){

return(

Loading...

)

}else{

return(

refreshControl={

refreshing = {false}

onRefresh = {this.reloadWordData.bind(this)}

/>

}

dataSource={this.state.data}

renderRow={(rowData)=>this.renderRow(rowData)}

renderFooter={this.renderFooter.bind(this)}

>

);

}

}

载入最新的头部数据添加到this.State中

reloadWordData(){

// alert(this.state.topLastId)

const url = 'http://127.0.0.1/getFootContent?lastid=' + this.state.topLastId + '&count=20&isTop=1'

fetch(url)

.then((response)=>response.json())

.then((jsondata)=>{

if (jsondata.data && jsondata.data.length > 0){

const rowData = jsondata.data.concat(this.state.jsondata);

this.setState({

topLastId:jsondata.data[0]['id'],

jsondata:rowData,

data:new ListView.DataSource({rowHasChanged:(r1, r2) => r1 != r2}).cloneWithRows(rowData),

})

}

})

.catch((error)=>{

alert(error);

});

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值