React-Native 之ListView

最近在摸索react-native,雖然蘋果爸爸已經(jīng)在之前封殺了JSPatch捣炬,我還是抱著試一試的態(tài)度先學(xué)一個(gè)療程熊昌,畢竟,知識(shí)嘛湿酸,多學(xué)點(diǎn)總是好的婿屹。

其實(shí)對(duì)于js我了解的不多,所以一些東西給不了相應(yīng)的解釋推溃,還請(qǐng)見諒(ps:我的學(xué)習(xí)階段都是從模仿開始的)昂利。后面我會(huì)不斷的學(xué)習(xí)基礎(chǔ)知識(shí),把相應(yīng)的解釋會(huì)添加上去的铁坎。見笑了蜂奸!

接下來先學(xué)習(xí)一下如何創(chuàng)建一個(gè)ListView

1.先設(shè)置一下樣式

上代碼:

//設(shè)置樣式
const styles = StyleSheet.create({
 
 //整個(gè)listView的樣式設(shè)置
  outerViewStyle: {
    //占滿窗口
    flex: 1
  },

//一個(gè)自定義view的樣式設(shè)置
  headerViewStyle: {
    height: 64,
    backgroundColor: 'orange',
    justifyContent: 'center',
    alignItems: 'center'
  },

//列表row的樣式設(shè)置
  rowStyle: {
    //設(shè)置主軸的方向
    flexDirection: 'row',
    //側(cè)軸方向居中
    alignItems: 'center',

    padding: 10,
    //單元格底部的線設(shè)置
    borderBottomColor: '#e8e8e8',
    borderBottomWidth: 0.5
  },

//分區(qū)頭部view的樣式設(shè)置
  sectionHeaderViewStyle: {
    backgroundColor: '#e8e8e8',
    justifyContent: 'center',
    height: 25
  }
});

以上就是本listView能用到的一些設(shè)置硬萍。

2.獲取數(shù)據(jù)

用到的數(shù)據(jù)是本地的json數(shù)據(jù)

//調(diào)取數(shù)據(jù)
componentDidMount(){
    this.loadDataFromJson();
  },

var Car = require('./Car.json');
loadDataFromJson(){
    //獲取json數(shù)據(jù)
    var jsonData = Car.data;

    //定義一些變量
    var dataBlob = {},
        sectionIDs = [],
        rowIDs = [],
        cars = [];

    for (var i = 0; i < jsonData.length; i++) {
      //1.把區(qū)號(hào)放入sectionIDs數(shù)組中
      sectionIDs.push(i);

      //2.把區(qū)中的內(nèi)容放入dataBlob對(duì)象中
      dataBlob[i] = jsonData[i].title;

      //3.取出該組中所有的車
      cars = jsonData[i].cars;
      rowIDs[i] = [];

      //遍歷所有的車數(shù)組
      for (var j = 0; j < cars.length; j++) {
        //1.把行號(hào)放入rowIDs[i]中
        rowIDs[i].push(j);
        //2.把每一行的內(nèi)容放入dataBlob對(duì)象中
        dataBlob[i + ':' + j] = cars[j];
      }
    }

    //更新狀態(tài)
    this.setState({
      dataSource: this.state.dataSource.cloneWithRowsAndSections(dataBlob,sectionIDs,rowIDs)
    });
  },

3.初始化函數(shù)

//初始化函數(shù)
  getInitialState(){

    //配置區(qū)數(shù)據(jù)
    var getSectionData = (dataBlob,sectionID) => {
      return dataBlob[sectionID];
    };

    //配置行數(shù)據(jù)
    var getRowData = (dataBlob,sectionID,rowID) => {
      return dataBlob[sectionID + ':' +rowID];
    };

    return {
      dataSource : new ListView.DataSource({

        getSectionData: getSectionData,//獲取區(qū)中的數(shù)據(jù)
        getRowData: getRowData,//獲取行中的數(shù)據(jù)
        rowHasChanged: (r1,r2) => r1 !== r2,
        sectionHeaderHasChanged: (s1,s2) => s1 !== s2

      })

    }

  },

  render() {
    return (<ListView />);
  },

4.配置數(shù)據(jù)

// 每一行的數(shù)據(jù)
  renderRow(rowData){
      return(
          <TouchableOpacity activeOpacity={0.5}>
              <View style={styles.rowStyle}>
                 <Text style={{marginLeft:5}}>{rowData.name}</Text>
              </View>
          </TouchableOpacity>
      );
  },

  renderSectionHeader(sectionData,sectionID) {
    return(
      <View style={styles.sectionHeaderViewStyle}>
        <Text style={{marginLeft:5,color:'red'}}>{sectionData}</Text>
      </View>
    );
  }

5.界面顯示

render(){
    return (
      <View style = {styles.outerViewStyle}>
        <View style={styles.headerViewStyle}>
            <Text style={{color:'white',fontSize:25}}>車的品牌</Text>
        </View>
        <ListView
            dataSource={this.state.dataSource}
            renderRow={this.renderRow}
            renderSectionHeader={this.renderSectionHeader}
        />
      </View>
    );
  },

上一個(gè)效果圖:

這里寫圖片描述

由于本人也是剛剛窺探rn扩所,所以很多地方都是不求甚解,所以很多地方?jīng)]有給出相應(yīng)的解釋朴乖,還請(qǐng)見諒祖屏!這里給出源碼,大家可以共同學(xué)習(xí)买羞!

原文地址

怒戳我袁勺,得源碼!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末畜普,一起剝皮案震驚了整個(gè)濱河市期丰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌吃挑,老刑警劉巖咐汞,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異儒鹿,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)几晤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門约炎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蟹瘾,你說我怎么就攤上這事圾浅。” “怎么了憾朴?”我有些...
    開封第一講書人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵狸捕,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我众雷,道長(zhǎng)灸拍,這世上最難降的妖魔是什么做祝? 我笑而不...
    開封第一講書人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮鸡岗,結(jié)果婚禮上混槐,老公的妹妹穿的比我還像新娘。我一直安慰自己轩性,他們只是感情好声登,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著揣苏,像睡著了一般悯嗓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上卸察,一...
    開封第一講書人閱讀 50,050評(píng)論 1 291
  • 那天脯厨,我揣著相機(jī)與錄音,去河邊找鬼蛾派。 笑死俄认,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的洪乍。 我是一名探鬼主播眯杏,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼壳澳!你這毒婦竟也來了岂贩?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤巷波,失蹤者是張志新(化名)和其女友劉穎萎津,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抹镊,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡锉屈,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了垮耳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片颈渊。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖终佛,靈堂內(nèi)的尸體忽然破棺而出俊嗽,到底是詐尸還是另有隱情,我是刑警寧澤铃彰,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布绍豁,位于F島的核電站,受9級(jí)特大地震影響牙捉,放射性物質(zhì)發(fā)生泄漏竹揍。R本人自食惡果不足惜敬飒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鬼佣。 院中可真熱鬧驶拱,春花似錦、人聲如沸晶衷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽晌纫。三九已至税迷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間锹漱,已是汗流浹背箭养。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留哥牍,地道東北人毕泌。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像嗅辣,于是被迫代替她去往敵國和親撼泛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

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

  • 前言 學(xué)習(xí)本系列內(nèi)容需要具備一定 HTML 開發(fā)基礎(chǔ)澡谭,沒有基礎(chǔ)的朋友可以先轉(zhuǎn)至 HTML快速入門(一) 學(xué)習(xí) 本人...
    珍此良辰閱讀 13,331評(píng)論 11 24
  • 一. 簡(jiǎn)介 一個(gè)核心組件愿题,用于高效地顯示一個(gè)可以垂直滾動(dòng)的變化的數(shù)據(jù)列表。最基本的使用方式就是創(chuàng)建一個(gè)ListVi...
    飛奔的小馬閱讀 1,235評(píng)論 0 2
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,860評(píng)論 25 707
  • 一. 簡(jiǎn)介 ListView加載多數(shù)據(jù)時(shí)經(jīng)常會(huì)用到分頁蛙奖,Gride排列潘酗,滾動(dòng)等高級(jí)操作,下面就簡(jiǎn)單介紹下 分頁 當(dāng)...
    飛奔的小馬閱讀 1,263評(píng)論 0 2
  • 官方文檔中給出了ListView組件數(shù)據(jù)源初始化的方式雁仲,這里主要記錄一下其中構(gòu)造函數(shù)中由于rowHasChange...
    LOVE小狼閱讀 682評(píng)論 0 0