React-Native 學(xué)習(xí)ListView和簡單布局

listView需要兩個(gè)關(guān)鍵數(shù)據(jù)婚夫,一個(gè)是row或者section的更新策略家凯;一個(gè)是需要顯示的data數(shù)據(jù)缓醋。
這里使用rowHasChanged和sectionHeaderHasChanged更新策略,也是最常見的策略绊诲。

1:在構(gòu)造函數(shù)中創(chuàng)建更新策略和數(shù)據(jù)

constructor(props) {
        super(props);
        let ds = new ListView.DataSource({
            rowHasChanged: (r1, r2) => r1 != r2,
            sectionHeaderHasChanged: (s1, s2) => s1 != s2,
        });
        this.state = {
            datasource: ds,
            data: {'a': ['aaa', 'bbb', 'ccc', 'ddd'], 'b': ['eee', 'fff', 'www', 'rrr']},
        }
    }

2:在創(chuàng)建listView的時(shí)候使用更新策略和數(shù)據(jù)源數(shù)據(jù)

//創(chuàng)建listview界面
//dataSource定義了策略和數(shù)據(jù)
//renderRow定義行顯示的view
    contantView = () => {
        return(
            <ListView style={styles.listViewStyle}
                      dataSource={this.state.datasource.cloneWithRowsAndSections(this.state.data)}
                      renderRow={(rowData, sectionId, rowId) => this.decideRowSectionView(rowData, sectionId, rowId)}
            />
        )
    };

3:以下為renderRow顯示的view

//判斷顯示row和section
    decideRowSectionView = (rowData, sectionId, rowId) => {
        if (upSectionId != sectionId) {
            upSectionId = sectionId;
            return(
                this.sectionView(rowData, sectionId, rowId)
            )
        }else {
            return(
                this.rowView(rowData, sectionId, rowId)
            )
        }
    };
    //創(chuàng)建row顯示的view
    rowView = (rowData, sectionId, rowId) => {
        return(
            <View style={styles.rowViewStyle}>
                <Image style={styles.rowViewImageStyle}
                       source={{uri: '/Users/kk/SampleAppMovies/image/a11.jpg'}}
                />
                <Text style={styles.rowViewTextStyle}>
                    {'當(dāng)前數(shù)據(jù)' + rowData + ' sectionId ' + sectionId + ' rowId ' + rowId}
                </Text>
            </View>
        )
    };
    //創(chuàng)建section顯示的view
    //不能使用float屬性送粱,這里用了ScrollView來限定Text的顯示
    sectionView = (rowData, sectionId, rowId) => {
        return(
            <View style={styles.sectionViewStyle}>
                <View style={styles.sectionUpViewStyle}>
                    <Image style={styles.rowViewImageStyle}
                           source={{uri: '/Users/kk/SampleAppMovies/image/c11.jpg'}}
                    />
                    <ScrollView style={styles.sectionScrollViewStyle}>
                        {<Text>千里鶯啼綠映紅,水村山郭酒旗風(fēng)掂之。南朝四百八十寺抗俄,多少樓臺煙雨中。</Text>}
                    </ScrollView>
                </View>
                <Text style={styles.rowViewTextStyle}>
                    鳳凰臺上鳳凰游世舰,鳳去臺空江自流动雹。吳宮花草埋幽徑,晉代衣冠成古丘跟压。三山半落青天外胰蝠,二水中分白鷺洲。總為浮云能蔽日茸塞,長安不見使人愁躲庄。
                    人生若只如初見,何事秋風(fēng)悲畫屏钾虐。等閑變卻故人心噪窘,卻道故人心易變。驪山雨露清宵半效扫,淚雨零鈴終不怨倔监。何如薄幸錦衣郎,比翼連枝當(dāng)日愿荡短。
                </Text>
                {this.rowView(rowData, sectionId, rowId)}
            </View>

        )
    };

4:使用的style

const styles = StyleSheet.create({
    rowViewStyle: {
        flex: 1,
        backgroundColor: '#1faadd',
        flexDirection: 'row',
        alignItems: 'center',
        padding: 10,
        borderBottomWidth: 0.5,
        borderBottomColor: '#000000',
    },
    rowViewImageStyle: {
        width: 40,
        height: 44,
    },
    rowViewTextStyle: {
        fontSize: 14,
        marginLeft: 10,
    },
    sectionViewStyle: {
        flex: 1,
        backgroundColor: '#afaadd',
    },
    sectionUpViewStyle: {
        flex: 1,
        padding: 10,
        flexDirection: 'row',
        alignItems: 'center',
        backgroundColor: '#6f5afd',
        borderBottomWidth: 0.1,
        borderBottomColor: '#a01010',
    },
    sectionScrollViewStyle: {
        margin: 10,
    },
    listViewStyle: {
        flex: 1,
        marginTop: 20,
    },
    rendViewStyle: {
        flex: 1,
    }
});

最終效果:

57B99D17-8F41-4230-B59D-06A27607B90C.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末丐枉,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子掘托,更是在濱河造成了極大的恐慌瘦锹,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件闪盔,死亡現(xiàn)場離奇詭異弯院,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)泪掀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進(jìn)店門听绳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人异赫,你說我怎么就攤上這事椅挣。” “怎么了塔拳?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵鼠证,是天一觀的道長。 經(jīng)常有香客問我靠抑,道長量九,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任颂碧,我火速辦了婚禮荠列,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘载城。我一直安慰自己肌似,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布诉瓦。 她就那樣靜靜地躺著锈嫩,像睡著了一般受楼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上呼寸,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天,我揣著相機(jī)與錄音猴贰,去河邊找鬼对雪。 笑死,一個(gè)胖子當(dāng)著我的面吹牛米绕,可吹牛的內(nèi)容都是我干的瑟捣。 我是一名探鬼主播,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼栅干,長吁一口氣:“原來是場噩夢啊……” “哼迈套!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起碱鳞,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤桑李,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后窿给,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體贵白,經(jīng)...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年崩泡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了禁荒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,127評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡角撞,死狀恐怖呛伴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情谒所,我是刑警寧澤热康,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站百炬,受9級特大地震影響褐隆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜剖踊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一庶弃、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧德澈,春花似錦歇攻、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽葬毫。三九已至,卻和暖如春屡穗,著一層夾襖步出監(jiān)牢的瞬間贴捡,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工村砂, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留烂斋,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓础废,卻偏偏與公主長得像汛骂,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子评腺,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評論 2 355

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

  • 一. 簡介 一個(gè)核心組件帘瞭,用于高效地顯示一個(gè)可以垂直滾動(dòng)的變化的數(shù)據(jù)列表。最基本的使用方式就是創(chuàng)建一個(gè)ListVi...
    飛奔的小馬閱讀 1,242評論 0 2
  • 此文章中蒿讥,包括簡單的布局蝶念,九宮格布局和頭視圖的使用小demo 前言 在iOS開發(fā)中,用的最多的一個(gè)控件就是Tabl...
    Zax_Smile閱讀 4,126評論 15 22
  • 社會(huì)閱歷淺的人诈悍,當(dāng)冒犯發(fā)生時(shí)祸轮,會(huì)第一時(shí)間追隨原始情緒進(jìn)行反擊,然后這樣的反擊多半沒有深入思考侥钳,并缺乏策略适袜,最終的結(jié)...
    天空的羈絆閱讀 614評論 0 0
  • 因?yàn)榧兇馑孕腋?嘟础T诶蠇屌惆榈膬商靸?nèi),總覺得被愛包繞给猾,三言兩語的關(guān)心就如同春蜜疫萤,沁人甜蜜。 父母的滿足很簡單敢伸,兒女...
    維他西柚閱讀 352評論 0 0
  • 文/小溪 朋友把她網(wǎng)購的玫瑰分享了一些給我扯饶,恰好我有一只小小的淡黃色花瓶,小得還沒我的巴掌大呢池颈! ...
    小溪_a5e9閱讀 230評論 4 4