我有以下代码,可以在其中从已经准备好的URL检索数据并将其显示在我的MPAndroid图表中,但是我想添加另一行,其中包含从另一个URL检索的数据:
inner class WeatherTaskTempLine : AsyncTask<String, Void, String>() {
override fun onPreExecute() {
super.onPreExecute()
}
override fun doInBackground(vararg params: String?): String? {
var response:String?
try{
val tempData = uriToday.build().toString()
response = URL(tempData).readText(
Charsets.UTF_8
)
}catch (e: Exception){
response = null
}
return response
}
override fun onPostExecute(result: String?) {
super.onPostExecute(result)
try {
val yVals = ArrayList<Entry>()
val xVals = ArrayList<Entry>()
/* Extracting JSON returns from the API */
val jsonTemperatureData = JSONArray(result)
for (i in 0 until jsonTemperatureData.length()) {
val item = jsonTemperatureData.getJSONObject(i)
val reading_temperature = item.getString("reading_temperature")
val hour = item.getString("hour")
yVals.add(Entry(hour.toFloat(), reading_temperature.toFloat(), i.toString()))
//xVals.add(Entry(hour.toFloat(), reading_humidity.toFloat(), i.toString()))
}
val set1: LineDataSet
set1 = LineDataSet(yVals, "Temperatura")
val set2: LineDataSet
set2 = LineDataSet(xVals, "Temperatura jucer")
val dataSets = ArrayList<ILineDataSet>()
dataSets.add(set1)
dataSets.add(set2)
val data = LineData(dataSets)
chart1.setData(data)
} catch (e: Exception) {
}
}
}
我可以从以下位置获取JSON数据:
`val tempData = uriToday.build().toString()
response = URL(tempData).readText(Charsets.UTF_8)`
但是我也想通过
val tempData = uriArchive.build().toString()
response = URL(tempData).readText(
Charsets.UTF_8
)
因此,我可以在像这样的另一个循环中遍历该数据,并将另一行设置为我的MPAndroidChart:
for (i in 0 until jsonTemperatureData.length()) {
}
如果这不是正确的方法,那会是什么?
答案 0 :(得分:2)
您可以从AsyncTask类返回其他数据类型,而不仅仅是字符串。
例如,您可以返回字符串的ArrayList
inner class WeatherTaskTempLine : AsyncTask<String, Void, ArrayList<String>>() {
这将使您能够从doInBackground
返回多个数据
请注意,您需要在onPostExecute
和doInBackground
返回类型中调整结果对象类型。