美文网首页React Nativereact-native开发
React-native ListView分组demo

React-native ListView分组demo

作者: Z_ying521 | 来源:发表于2016-09-19 15:24 被阅读553次

constructor(props){

super(props)

var getSectionData = (dataBlob,sectionIndex) => {

return dataBlob[sectionIndex]

}

var getRowData = (dataBlob ,sectionIndex, rowIndex) => {

return dataBlob[sectionIndex + ':' + rowIndex]

}

this.state = {

dataSource : new ListView.DataSource({

getSectionHeaderData: getSectionData,//获取组中的数据

getRowData:getRowData,//获取行中数据

rowHasChanged:(r1,r2) => r1!==r2,

sectionHeaderHasChanged:(s1,s2) => s1 !== s2

})

}

}

核心如下:

//复杂的操作,数据请求 或者 异步操作(定时器)

componentDidMount(){

//调用json数据

this.loadDataFromJson();

}

loadDataFromJson(){

//拿到json数据

var jsonData = Car.data

//定义一些变量

var dataBlob = {},

sectionIDs = [],

rowIDs = [],

cars = [];

//遍历

for (var i = 0; i < jsonData.length; i++){

//1.把组号放入sectionIDs数组中

sectionIDs.push(i)

//2.把组中内容放入dataBlod对象

dataBlob[i] = jsonData[i].title

//3.取出该组中所有的车

cars = jsonData[i].cars

rowIDs[i] = [];

//4.遍历所有的车数组

for(var j=0; j<car.length;j++){

rowIDs[i].push(j)

dataBlob[i+':'+j] = cars[j]

}}

//更新状态

this.setState({

dataSource:this.state.dataSource.cloneWithRowsAndSections(dataBlob,sectionIDs,rowIDs)

});

效果图

相关文章

网友评论

  • Z_ying521:做为练习的话,你就创建一个JSON文件,里面个数组,在数组中放入多个字典就可以练习了,数据你自己添加就好了
  • putaozhuose:您好,能否给出具体的数据结构

本文标题:React-native ListView分组demo

本文链接:https://www.haomeiwen.com/subject/vmumjttx.html