2016-09-04 15 views
0

RNを初めて使用していて、json配列のデータを含むリストビューを表示しようとしています。単純な配列を使用すると、コードに示されているjson配列エミュレータを実行すると、何も表示されません。リストビューでそれを表示するには、以下の私の例では、JSONを処理するための具体的な方法があります:ReactネイティブjsonオブジェクトがListViewに表示されない

class FetchExample extends Component { 

    constructor(props) { 
    super(props); 
    // Initialize the hardcoded test data - to be replaced by JOSN fetch 
    let data = {"Vehicles":[[ 
     {"vehicle_make": "Toyota", 
     "vehicle_model": "Camry", 
     "vehicle_year": "2015", 
     "vehicle_price_range": "$$ (10-30)", 
     "car_id": 1127, 
     "vehicle_color": "Black", 
     "vehicle_car_accidents": "No", 
     "vehicle_no_owners": "1", 
     "car_vehicle_location": "Lot", 
     "vehicle_city_location": "L.A", 
     "vehicle_mileage": 10864, 
     "vehicle_vin": 1234, 
     "vehicle_off_lease": "Yes", 
     "vehicle_state": "CA" 
    }]]}; 
    const ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2}); 
    this.state = { 
     dataSource: ds.cloneWithRows(data) 
    }; 
    console.log(data); 
    } 
    render() { 
    return (
     <View style={{paddingTop: 22}}> 
     <ListView 
      dataSource={this.state.dataSource} 
      renderRow={(rowData) => <Text>{rowData.Vehicles}</Text>} 
     /> 
     </View> 
    ); 
    } 
} 

答えて

2

私はthe docsを参照している場合は、それがどのように見えるあなたのdata配列ではなくオブジェクトでなければなりません。あなたは次のことを試すことができますか?

let data = [ 
    {"vehicle_make": "Toyota", 
    "vehicle_model": "Camry", 
    "vehicle_year": "2015", 
    "vehicle_price_range": "$$ (10-30)", 
    "car_id": 1127, 
    "vehicle_color": "Black", 
    "vehicle_car_accidents": "No", 
    "vehicle_no_owners": "1", 
    "car_vehicle_location": "Lot", 
    "vehicle_city_location": "L.A", 
    "vehicle_mileage": 10864, 
    "vehicle_vin": 1234, 
    "vehicle_off_lease": "Yes", 
    "vehicle_state": "CA" 
}]; 

編集: あなたの代わりに

dataSource: ds.cloneWithRows(data.Vehicles[0]) 

dataSource: ds.cloneWithRows(data) 

を置き換えることができますが、私はあなたが同じくらいすることができますようにあなたのデータを平らにお勧めしたいです。

edit 2: レンダリング方法も変更する必要があります。次へrenderRowを変更しよう:

renderRow={(rowData) => <Text>{rowData.vehicle_make}</Text>} 
+1

おかげで、私はしかし、私はまだ画面に任意のリストビューコンポーネントの出力が表示されない、あなたの提案を試みました。私はconsole.log(data.Vehicles)を実行し、そこにデータがあることを確認することができます。 – bobby747

+0

私はそれを得たと思う - 今すぐ 'cloneWithRows'に渡されたデータは配列なので、正しくレンダリングする必要があります。以下を試してください: 'renderRow = {(rowData)=> {rowData。 vehicle_make + '' + rowData。 vehicle_model}} ' – vgrafe

+0

また、JSONオブジェクトのすべてのプロパティを表示することはあなたの目標ですか?そうであれば教えてください。私は答えを更新します。オブジェクトのプロパティではなく、配列内のすべてのプロパティを持つ必要があります。 – vgrafe

関連する問題