React Native(多選實現(xiàn),2017-09-05)

20170906150468611759afb0250585a.gif

1.renderShowEditView里面的2個圖片自己替換一下
2.復(fù)制代碼直接就可以跑

import React, {PureComponent} from 'react'
import {View, Text, StyleSheet, ScrollView, TouchableOpacity, ListView, Image, Dimensions} from 'react-native'
const ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
let {width, height} = Dimensions.get('window');
export default class CircleList extends PureComponent {
    constructor(props) {
        super(props);
        this.state = {
            isEdict: false,//是否編輯狀態(tài)
            selectArray: [],
            dataSource: [{id: '1', title: '文章1'}, {id: '2', title: '文章2'}, {id: '3', title: '文章3'},],
        }
    }
    componentDidMount() {
        let array = this.state.dataSource;
        let newArray = []
        //服務(wù)器返回的數(shù)據(jù),自己增加一個狀態(tài),控制是否選中
        for (let i = 0; i < array.length; i++) {
            let dict = array[i]
            dict.isSelect = false;
            newArray.push(dict);
        }
        this.setState({
            dataSource: newArray
        });
    }
    render() {
        return (
            <View style={{flex: 1}}>
                <Text onPress={this.onEditOnPress} style={{color: 'black'}}>{'點我進入編輯/非編輯狀態(tài)'}</Text>
                <ListView
                    renderRow={this.renderRow}
                    dataSource={ds.cloneWithRows(this.state.dataSource)}/>
                <View style={{justifyContent: 'center', alignItems: 'center'}}>
                    <Text>{JSON.stringify(this.state.selectArray)}</Text>
                </View>
            </View>
        );
    }
    renderRow = (rowData, sectionID, rowID, highlightRow) => {
        return (
            <View style={{height: 111, borderBottomColor: 'gray', borderBottomWidth: 1, flexDirection: 'row'}}>
                {this.renderShowEditView(this.state.isEdict, rowData, rowID, ()=> {
                    this.rightOnPress(rowData, rowID)
                })}
                <View style={{justifyContent: 'center', alignItems: 'center'}}>
                    <Text>{rowData.title}</Text>
                </View>
            </View>
        )
    }
    //是否進去編輯狀態(tài)
    onEditOnPress = ()=> {
        this.setState({isEdict: !this.state.isEdict});
    }
    //左邊按鈕選擇
    rightOnPress = (rowData, index)=> {
        let selectArray = this.state.selectArray;
        let data = this.state.dataSource;
        let newArray = []
        for (let i = 0; i < data.length; i++) {
            let dict = data[i];
            if (index == i) {
                if (dict.isSelect == true) {
                    dict.isSelect = false
                    for (let j = 0; j < selectArray.length; j++) {
                        let id = selectArray[j];
                        if (id == dict.id) {
                            selectArray.splice(j, 1);
                        }
                    }
                } else {
                    dict.isSelect = true
                    selectArray.push(dict.id);
                }
            }
            newArray.push(dict);
        }
        this.setState({
            selectArray: selectArray,
            dataSource: newArray
        });
    }
    //是否選中
    renderShowEditView(isEdict, rowData, index, onPress) {
        if (isEdict == true) {
            let imageURL = require('../../res/img/circle/沒選中.png')
            if (rowData.isSelect == true) {
                imageURL = require('../../res/img/circle/選中.png')
            }
            return (
                <TouchableOpacity onPress={()=> {
                    onPress(rowData, index)
                }} style={{height: 111, width: 40, justifyContent: 'center', alignItems: 'center'}}>
                    <Image style={{width: 30, height: 30}} source={imageURL}/>
                </TouchableOpacity>
            )
        }
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鹏往,一起剝皮案震驚了整個濱河市洛退,隨后出現(xiàn)的幾起案子卸察,更是在濱河造成了極大的恐慌典挑,老刑警劉巖滚秩,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異厘肮,居然都是意外死亡拷橘,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門气嫁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來当窗,“玉大人,你說我怎么就攤上這事寸宵⊙旅妫” “怎么了?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵梯影,是天一觀的道長巫员。 經(jīng)常有香客問我,道長甲棍,這世上最難降的妖魔是什么疏遏? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任救军,我火速辦了婚禮财异,結(jié)果婚禮上唱遭,老公的妹妹穿的比我還像新娘。我一直安慰自己疫鹊,他們只是感情好袖瞻,可當(dāng)我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布聋迎。 她就那樣靜靜地躺著,像睡著了一般霉晕。 火紅的嫁衣襯著肌膚如雪捞奕。 梳的紋絲不亂的頭發(fā)上牺堰,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天伟葫,我揣著相機與錄音,去河邊找鬼筏养。 笑死常拓,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的墩邀。 我是一名探鬼主播,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼眉睹,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了竹海?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤孔飒,失蹤者是張志新(化名)和其女友劉穎艰争,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體甩卓,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年缀棍,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片爬范。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖璧亮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情狱窘,我是刑警寧澤财搁,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站尖奔,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏淹禾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一铃岔、第九天 我趴在偏房一處隱蔽的房頂上張望峭火。 院中可真熱鬧,春花似錦卖丸、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽衅枫。三九已至,卻和暖如春弦撩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背孤钦。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工纯丸, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留静袖,地道東北人觉鼻。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓队橙,卻偏偏與公主長得像,于是被迫代替她去往敵國和親捐康。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,834評論 2 345

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