ich ein ListView
als Selektor verwenden, funktioniert alles, aber ich kann den visuellen Zustand des Elements der Liste nicht ändern:Wie ein Listview-Artikel ändern, wie markiert React-india
this.state = {
dataSource: dataSource.cloneWithRows([
{
provincia:"Bocas del Toro",
capital: "Bocas del Toro",
selected:false,
},
{
provincia:"Coclé",
capital: "Penonomé",
selected:false,
},
...
ich ändern direkt die Daten onPress wie folgt aus:
rowPressed(rowData) {
rowData.selected = true;
this.props.onAreaSelect(rowData);
}
Und ich versuche die Ansicht wie folgt zu ändern:
<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>
Hier sind styles.selected
und styles.unselected
nur zwei verschiedene definierte Stile.
in der onPress, warum müssen wir 'onPress = {() => this.rowPressed (rowData)}'? In anderen Ansichten, in denen das 'TouchableHighlight' nicht in einer ListView ist, kann ich einfach' onPress = {this.rowPressed (rowData)}} verwenden, aber warum muss ich das extra '() =>'? –