我正在尝试通过api数据json构建用于航班时刻表的应用程序。我的应用程序运行正常,没有问题。我唯一的问题是飞行时间。有些航班的值是空的,所以我想检查时间是否为空,返回N / A。
时间的结果,如果data json中的值为null。
HandleJson
private fun handleJson (jsonString: String?){
val jsonObj = JSONObject(jsonString)
val result = jsonObj.getJSONObject("result")
val response = result.getJSONObject("response")
val airport = response.getJSONObject("airport")
val pluginData = airport.getJSONObject("pluginData")
val schedule = pluginData.getJSONObject("schedule")
val arrivals = schedule.getJSONObject("arrivals")
// val data = arrivals.getJSONObject("data")
val jsonArray = JSONArray(arrivals.get("data").toString())
val list = ArrayList<FlightShdu>()
var x = 0
while (x < jsonArray.length()){
val jsonObject = jsonArray.getJSONObject(x)
list.add(FlightShdu(
jsonObject.getJSONObject("flight").getJSONObject("identification").getJSONObject("number").getString("default"),
jsonObject.getJSONObject("flight").getJSONObject("airline").getString("short"),
jsonObject.getJSONObject("flight").getJSONObject("status").getJSONObject("generic").getJSONObject("status").getString("text"),
jsonObject.getJSONObject("flight").getJSONObject("airline").getJSONObject("code").getString("icao"),
jsonObject.getJSONObject("flight").getJSONObject("time").getJSONObject("scheduled").getString("departure"),
jsonObject.getJSONObject("flight").getJSONObject("airport").getJSONObject("origin").getJSONObject("code").getString("iata"),
jsonObject.getJSONObject("flight").getJSONObject("aircraft").getJSONObject("model").getString("code"),
// for more information
jsonObject.getJSONObject("flight").getJSONObject("time").getJSONObject("real").getString("departure"),
jsonObject.getJSONObject("flight").getJSONObject("time").getJSONObject("estimated").getString("arrival")?: "N/A"
// jsonObject.getJSONObject("flight").getJSONObject("time").getJSONObject("estimated").getString("arrival"),
// jsonObject.getJSONObject("flight").getJSONObject("status").getJSONObject("generic").getJSONObject("status").getString("diverted")
))
x++
}
list.forEach(::println)
val adapter = ListAdapte(this@MainActivity,list)
flight_arrivel_list.adapter = adapter
}
意图活动
val TimeArrival = bundle.getString("TimeArrival")?: "N/A"
timearraiveId2.text=getDateTime(TimeArrival)
fun getDateTime(s: String): String? {
try {
val sdf = SimpleDateFormat("KK:mm a")
val netDate = Date(s.toLong() * 1000)
return sdf.format(netDate)
} catch (e: Exception) {
return e.toString()
}
}
我尝试使用此代码,但是他不起作用。
if (TimeArrival==null) {
timearraiveId2.setText("N/A")
}
答案 0 :(得分:1)
替换:
try {
val sdf = SimpleDateFormat("KK:mm a")
val netDate = Date(s.toLong() * 1000)
return sdf.format(netDate)
} catch (e: Exception) {
return e.toString()
}
使用
try {
val sdf = SimpleDateFormat("KK:mm a")
val netDate = Date(s.toLong() * 1000)
return sdf.format(netDate)
} catch (e: Exception) {
return "N/A"
}
您不希望错误本身显示在recyclerview中,
您想要"N/A"
。
因此id时间为null
,然后catch语句将返回"N/A"
。