2016-02-15 5 views
9

Na przykład mam listę miast. Muszę stworzyć coś w rodzaju: thisnatywne wejście Autouzupełnianie tekstu wejściowego

Jak go utworzyć (dla systemu Android i iOS)? I gdzie powinienem go przechowywać?

+0

Potrzebujemy więcej informacji, aby pomóc. Czy masz dane przechowywane lokalnie? Czy otrzymujesz dane z prośbą? Może opublikuj kod, abyśmy mogli zobaczyć, gdzie leży twój problem. –

+0

Moje dane przechowywane w pliku json. – zlFast

Odpowiedz

16

OK, więc na podstawie małego informacji dałeś nam, starałem się zrobić szybki przykład (bez projektowania w ogóle), które można znaleźć here

dam ci zrobić stylizację.

Odczyt danych z pliku syna sprawdzić this

kodu jest następujący:

'use strict'; 

var React = require('react-native'); 
var { 
    AppRegistry, 
    Component, 
    StyleSheet, 
    Text, 
    TextInput, 
    ListView, 
    View, 
} = React; 

var adresses = [ 
    { 
    street: "1 Martin Place", 
     city: "Sydney", 
    country: "Australia" 
    },{ 
    street: "1 Martin Street", 
     city: "Sydney", 
    country: "Australia" 
    } 
]; 

var ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2}); 

class SampleApp extends Component { 
    constructor(props) { 
    super(props); 

    this.state = { 
     searchedAdresses: [] 
    }; 
    }; 

    searchedAdresses = (searchedText) => { 
    var searchedAdresses = adresses.filter(function(adress) { 
     return adress.street.toLowerCase().indexOf(searchedText.toLowerCase()) > -1; 
    }); 
    this.setState({searchedAdresses: searchedAdresses}); 
    }; 

    renderAdress = (adress) => { 
    return (
     <View> 
     <Text>{adress.street}, {adress.city}, {adress.country}</Text> 
     </View> 
    ); 
    }; 
    render() { 
    return (
     <View style={styles.container}> 
     <TextInput 
      style={styles.textinput} 
      onChangeText={this.searchedAdresses} 
      placeholder="Type your adress here" /> 
     <ListView 
        dataSource={ds.cloneWithRows(this.state.searchedAdresses)} 
      renderRow={this.renderAdress} /> 
     </View> 
    ); 
    }; 
} 

var styles = StyleSheet.create({ 
    container: { 
    flex: 1, 
    justifyContent: 'center', 
    alignItems: 'center', 
    backgroundColor: '#FFFFFF', 
    }, 
    textinput: { 
    marginTop: 30, 
    backgroundColor: '#DDDDDD', 
    height: 40, 
    width: 200 
    } 
}); 

AppRegistry.registerComponent('SampleApp',() => SampleApp); 
+0

dzięki za to rozwiązanie! – mvdb

+3

To nie jest już dostępne ... – Gp2mv3

+0

Link jest uszkodzony. – dhuma1981