React Native ListView實(shí)現(xiàn)分組列表顯示

import React, { Component } from 'react';
import {
  AppRegistry,
  StyleSheet,
  Text,
  View,
  Content,
  TouchableOpacity,
  ListView,
  PixelRatio,
} from 'react-native';
var apps = {
  "data": [
    {
      "shops": [
        {
          "name": "商品一"
        },
        {
          "name": "商品二"
        },
        {
          "name": "商品三"
        },
      ],
      "title": "分類(lèi)1"
    },
    {
      "shops": [
        {
          "name": "商品一"
        },
        {
          "name": "商品二"
        }
      ],
      "title": "分類(lèi)2"
    },
    {
      "shops": [
        {
          "name": "商品一"
        },
      ],
      "title": "分類(lèi)3"
    }
  ]
};
    
class rn25 extends Component{
constructor(props) {
  super(props);
  var getSectionData = (dataBlob, sectionID) => {
          return dataBlob[sectionID];
      };

  var getRowData = (dataBlob, sectionID, rowID) => {
          return dataBlob[sectionID + ':' + rowID];
      };

  this.state = {
     dataSource: new ListView.DataSource({
              getSectionData: getSectionData, // 獲取組中數(shù)據(jù)
              getRowData: getRowData, // 獲取行中的數(shù)據(jù)
              rowHasChanged: (r1, r2) => r1 !== r2,
              sectionHeaderHasChanged: (s1, s2) => s1 !== s2
          })
  };
}
 // 請(qǐng)求數(shù)據(jù)放在這
componentDidMount(){
             // 加載數(shù)據(jù)
          this.loadData();
}

// 加載數(shù)據(jù)
loadData(){
    var json = apps.data;
    var dataBlob = {},sectionIDs = [],rowIDs = [],cars = [];
  for (var i in json) {
      //step 1坎藐、把組數(shù)據(jù)放入sectionIDs數(shù)組中
      sectionIDs.push(i);
      //step 2抓歼、把組中內(nèi)容放dataBlob對(duì)象中
      dataBlob[i] = json[i].title;
      //step 3旷余、取出該組中所有的商品
      shops = json[i].shops;
      //step 4記錄每一行中的數(shù)據(jù)
      rowIDs[i] = [];
      //step 5、獲取行中每一組數(shù)據(jù)
      for (var j in shops) {
          //把行號(hào)放入rowIDs中
          rowIDs[i].push(j);
          //把每一行中的內(nèi)容放dataBlob對(duì)象中
          dataBlob[i + ':' + j] = shops[j];
      }
  }
   this.setState({
      dataSource: this.state.dataSource.cloneWithRowsAndSections(dataBlob, sectionIDs, rowIDs)
    });
}

  render(){
    return(
       <View style={styles.outerViewStyle}>
                <ListView
                    dataSource={this.state.dataSource}
                    renderRow={this.renderRow.bind(this)}
                    renderSectionHeader={this.renderSectionHeader.bind(this)}
                />
            </View>
      );
  }

  renderRow(rowData) {
        return (
            <TouchableOpacity activeOpacity={0.5}>
                <View style={styles.rowStyle}>
                    <Text style={{marginLeft: 5}}>{rowData.name}</Text>
                </View>
            </TouchableOpacity>
        );
    }

    // 每一組中的數(shù)據(jù)
    renderSectionHeader(sectionData, sectionID) {
        return (
            <View style={styles.sectionHeaderViewStyle}>
                <Text style={{marginLeft: 5, color: 'white'}}>{sectionData}</Text>
            </View>
        );
    }
}
  const styles = StyleSheet.create({
     outerViewStyle: {
        //占滿窗口
        flex: 1,
    },

    headerViewStyle: {
        height: 64,
        backgroundColor: 'blue',
        justifyContent: 'center',
        alignItems: 'center'
    },

    rowStyle: {
        flexDirection: 'row',
        alignItems: 'center',
        padding: 10,
        borderBottomColor: 'grey',
        borderBottomWidth: 1 / PixelRatio.get()
    },

    rowImageStyle: {
        width: 70,
        height: 70,
    },

    sectionHeaderViewStyle: {
        backgroundColor: 'red',
        height: 30,
        justifyContent: 'center'
    }
  });
 AppRegistry.registerComponent('rn25', () => rn25);
1E9E2FAF-DBE3-4D07-817C-09830049DCE9.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市壮不,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖尘喝,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異斋陪,居然都是意外死亡朽褪,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)无虚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)缔赠,“玉大人,你說(shuō)我怎么就攤上這事友题∴脱撸” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵度宦,是天一觀的道長(zhǎng)踢匣。 經(jīng)常有香客問(wèn)我告匠,道長(zhǎng),這世上最難降的妖魔是什么离唬? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任后专,我火速辦了婚禮,結(jié)果婚禮上输莺,老公的妹妹穿的比我還像新娘戚哎。我一直安慰自己,他們只是感情好嫂用,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布型凳。 她就那樣靜靜地躺著,像睡著了一般嘱函。 火紅的嫁衣襯著肌膚如雪甘畅。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,046評(píng)論 1 285
  • 那天实夹,我揣著相機(jī)與錄音橄浓,去河邊找鬼。 笑死亮航,一個(gè)胖子當(dāng)著我的面吹牛荸实,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播缴淋,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼准给,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了重抖?” 一聲冷哼從身側(cè)響起露氮,我...
    開(kāi)封第一講書(shū)人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎钟沛,沒(méi)想到半個(gè)月后畔规,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡恨统,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年叁扫,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片畜埋。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡莫绣,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出悠鞍,到底是詐尸還是另有隱情对室,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站掩宜,受9級(jí)特大地震影響蔫骂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜锭亏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一纠吴、第九天 我趴在偏房一處隱蔽的房頂上張望硬鞍。 院中可真熱鬧慧瘤,春花似錦、人聲如沸固该。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)伐坏。三九已至怔匣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間桦沉,已是汗流浹背每瞒。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留纯露,地道東北人剿骨。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像埠褪,于是被迫代替她去往敵國(guó)和親浓利。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容