0
私はこの時点まで私を得るためにいくつかの例を使用しましたが、リストの変更を表示するためのビューを取得できません。 select/deSelectに連絡先のリストがあります。バックグラウンドの色を変更したいと思います。それが更新されるのは、選択を行った後だけです。私はコードを変更し、ホットリロードを有効にしてそれを保存します。私はforceUpdate()を実行しようとしたが、どちらもうまくいきませんでした。update react-native listview
constructor(props) {
super(props);
this.selectedContactArray = [];
var ds = new ListView.DataSource({ rowHasChanged: (row1, row2) => row1 !== row2 });
this.state = {
dataSource: ds.cloneWithRows(this.props.contactListState),
db: this.props.contactListState,
nameFilter: '',
selectedContacts: [],
visibleWidth: Dimensions.get('window').width,
visibleHeight: Dimensions.get('window').height
};
}
セレクト機能
_handleSelectContact(rowData) {
this.add = true;
var result = this.state.db.slice();
_.each(this.selectedContactArray, (item) => {
if (item === rowData)
this.add = false;
});
if (this.add) {
this.selectedContactArray.push(rowData);
result = _.filter(this.state.db, (item) => {
if (item == rowData)
item.isSelected = true;
return item;
});
}
else {
this.selectedContactArray = _.filter(this.state.selectedContacts, (item) => {
return item != rowData;
});
result = _.filter(this.state.db, (item) => {
if (item == rowData)
item.isSelected = false;
return item;
});
}
this.setState({
dataSource: this.state.dataSource.cloneWithRows(result),
db: result,
selectedContacts: this.selectedContactArray
});
this.forceUpdate();
}
_renderRow()
_renderRow(rowData) {
return (
<TouchableOpacity
onPress={() => this._handleSelectContact(rowData) }
style={{
flexDirection: 'row',
backgroundColor: (rowData.isSelected) ? 'rgba(255,255,255,0.6)' : 'transparent'
}}>
<Image source={images.placeholder} style={styles.contactImage} />
<View style={styles.contactContainer}>
<Text numberOfLines={2} style={styles.contactName}>
{rowData.familyName} {rowData.givenName}
</Text>
</View>
</TouchableOpacity>
);
}