Я пытаюсь отобразить данные в Listview.Во-первых, я фильтрую данные (файл JSON) на основе выбора, который пользователь сделал на предыдущем экране.Я передаю параметр на следующий экран, говоря:
this.props.navigation.state.params.JSON_ListView_Clicked_Item)
Основываясь на вышеупомянутом параметре, я сделал ListView.DataSource внутри функции рендеринга.Единственная причина, я попытался сделать ListView.DatSource внутри функции рендеринга, потому что, насколько я понимаю, это единственное место, где я могу прочитать значение параметра.Когда я пытался отобразить свой listView, я получаю сообщение об ошибке:
TypeError undefined не является объектом.Ниже приведен снимок экрана:
Ниже приведен мой код:
import React, { Component } from 'react';
import { StyleSheet, Text, View, ListView, ActivityIndicator, TextInput } from 'react-native';
import ServiceDetails from '../reducers/ServiceDetails';
class ServiceListDetails extends Component
{
static navigationOptions =
{
title: 'SecondActivity',
};
ListViewItemSeparator = () => {
return (
<View
style={{
height: .5,
width: "100%",
backgroundColor: "#000",
}}
/>
);
}
render()
{
var x = this.props.navigation.state.params.JSON_ListView_Clicked_Item ;
var newList = ServiceDetails.filter(obj => obj.fk === this.props.navigation.state.params.JSON_ListView_Clicked_Item)
let ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
this.setState({
dataSource: ds.cloneWithRows(newList)
}
);
return(
<View style={styles.MainContainer}>
<ListView
dataSource={this.dataSource}
renderSeparator= {this.ListViewItemSeparator}
renderRow={(rowData) => <Text>{rowData}</Text>}
/>
</View>
);
}
}
Ниже приведен файл JSON:
[
{
"id":"1",
"fk": "1",
"addr": "TestAddress1",
"phone": "(888)889-9999",
"LatL":"33.234567",
"Long2":"117.284725",
"Online": "x"
},
{
"id":"2",
"fk": "1",
"addr": "TestAddress1",
"phone": "(999)-999-9999",
"LatL":"33.971110",
"Long2":"117.31111",
"Online": ""
},
]