Sto usando un ListView
come selettore, tutto funziona, ma non riesco a cambiare lo stato visivo dell'elemento della lista:Come cambiare un ListView Oggetto come codificato React-Native
this.state = {
dataSource: dataSource.cloneWithRows([
{
provincia:"Bocas del Toro",
capital: "Bocas del Toro",
selected:false,
},
{
provincia:"Coclé",
capital: "Penonomé",
selected:false,
},
...
cambio i dati onPress direttamente in questo modo:
rowPressed(rowData) {
rowData.selected = true;
this.props.onAreaSelect(rowData);
}
e cerco di cambiare la vista in questo modo:
<TouchableHighlight onPress={() => this.rowPressed(rowData)}
underlayColor='#eeeeee' >
<View>
<View style={[styles.rowContainer, this.state.selected ? styles.selected : styles.unselected ]}>
<View style={styles.textContainer}>
<Text style={styles.title}
numberOfLines={1}>{rowData.provincia}</Text>
<Text style={styles.description}
numberOfLines={1}>Capital: {rowData.capital}</Text>
</View>
</View>
<View style={styles.separator} />
</View>
</TouchableHighlight>
Dove styles.selected
e styles.unselected
sono solo 2 diversi stili definiti.
in onPress, perché dobbiamo usare 'onPress = {() => this.rowPressed (rowData)}'? In altre viste in cui 'TouchableHighlight' non è in un ListView, posso semplicemente usare' onPress = {this.rowPressed (rowData)} ', ma perché qui devo aggiungere l'extra'() => '? –