native react 二级菜单_React Native 跨平台多级列表开发

最近一个月看了下reactnative,感觉以后是个趋势,一个人可以干两个人的活了,只是有点卡.其他还好.感觉老玩家玩一周就可以上手,上手容易,精通就另外讲.总体来说还是挺有意思的.下面就一个多级列表+一行多项组件详细讲解下

像这样的二级列表,对应的数据结构如下:

首先定义datasource:

vargetSectionData= (dataBlob,sectionID)=>{

returndataBlob[sectionID];

};

vargetRowData= (dataBlob,sectionID,rowID)=>{

returndataBlob[sectionID+":"+rowID];

};

this.state= {

dataSource:newListView.DataSource({

getSectionData:getSectionData,

getRowData:getRowData,

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

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

}),

拿到数据之后

varjsonData=response.data.seconde_type_list;

//    定义变量

vardataBlob= {},

sectionIDs= [],

rowIDs= [];

for(vari=0;i

sectionIDs.push(i);

dataBlob[i] =jsonData[i].product_type_name;

rowIDs[i] = [];

varchilds=jsonData[i].child_type;

for(varj=0;j

rowIDs[i].push(j);

dataBlob[i+':'+j] =childs[j];

}

}

vards=this.state.dataSource.cloneWithRowsAndSections(dataBlob,sectionIDs,rowIDs)

this.setState({dataSource:ds});

渲染

render() {

// const name = this.props.name;

return(

showText={this.state.name}

tag={'mdzz'}

onClick={this._onBack}/>

dataSource={this.state.dataSource}

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

contentContainerStyle={styles.listViewStyle}

renderSectionHeader={this.renderSectionHeader}

/>

);

}

渲染每行

renderRow(rowData) {

return(

{/**/}

{rowData.product_type_name}

);

}

渲染listview 头部

renderSectionHeader(sectionData,sectionId) {

return(

{sectionData}

);

}

注意listview头部的style要如下设置,每行3个,按照屏幕宽度平分,代码略

就可以实现android下LISTVIEW  嵌套GRIDVIEW效果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值