Android 如何将url读取内容添加到arraylist

Android 如何将url读取内容添加到arraylist,android,arraylist,kotlin,Android,Arraylist,Kotlin,这是我从URL读取内容然后将其添加到arraylist的代码。当我调试时,它显示sb.append(行)获取字符串,但在此之后,ArrayList数据大小=0。所以我真的很困惑,添加sb不起作用。我怎样才能修好它 var arrayListData = ArrayList<String>() var config: Config = Config() inner class GetData: AsyncTask<Void, Void, ArrayList<String&

这是我从URL读取内容然后将其添加到arraylist的代码。当我调试时,它显示sb.append(行)获取字符串,但在此之后,ArrayList数据大小=0。所以我真的很困惑,添加sb不起作用。我怎样才能修好它

var arrayListData = ArrayList<String>()
var config: Config = Config()

inner class GetData: AsyncTask<Void, Void, ArrayList<String>>() {
    override fun doInBackground(vararg params: Void?): ArrayList<String> {
        val link = arrayOf(config.urlStatus, config.urlTongquan, config.urlBanggia)
        for (i in 0 until link.size){
            getContentURL(link[i])
        }
        return arrayListData
    }

    override fun onPostExecute(result: ArrayList<String>) {
        super.onPostExecute(result)
        Toast.makeText(this@MainActivity, result[1], Toast.LENGTH_SHORT).show()
    }
}

private fun getContentURL(url: String?) : ArrayList<String> {
    var sb = StringBuilder()
    val url = URL(url)
    val urlConnection: HttpURLConnection = url.openConnection() as HttpURLConnection
    val inputStream: InputStream = urlConnection.inputStream
    val isr = InputStreamReader(inputStream)
    val br = BufferedReader(isr)

    var line: String? = ""
    try {
        do {
            line = br.readLine()
            if(line != null){
                sb.append(line)
                arrayListData.add(sb.toString())
            }
        }while (line != null)
        br.close()
    }catch (e: Exception){
        Log.d("AAA", e.toString())
    }
    return arrayListData
}
var arrayListData=ArrayList()
var-config:config=config()
内部类GetData:AsyncTask(){
重写fun doInBackground(vararg参数:Void?):ArrayList{
val link=arrayOf(config.urlStatus、config.urlTongquan、config.urlBanggia)
用于(在0中输入i,直到link.size){
getContentURL(链接[i])
}
返回arrayListData
}
重写onPostExecute(结果:ArrayList){
super.onPostExecute(结果)
Toast.makeText(this@MainActivity,结果[1],Toast.LENGTH\u SHORT.show()
}
}
私有趣味getContentURL(url:String?):ArrayList{
var sb=StringBuilder()
val url=url(url)
val urlConnection:HttpURLConnection=url.openConnection()作为HttpURLConnection
val inputStream:inputStream=urlConnection.inputStream
val isr=InputStreamReader(inputStream)
val br=缓冲读取器(isr)
变量行:字符串?=“”
试一试{
做{
line=br.readLine()
如果(行!=null){
某人追加(行)
arrayListData.add(sb.toString())
}
}while(行!=null)
br.close()
}捕获(e:例外){
Log.d(“AAA”,例如toString())
}
返回arrayListData
}

将代码更改为以下代码:

for (i in 0 until link.size){
                arrayListData.add(getContentURL(link[i]))
            }
然后从getContentURL()返回字符串,如下所示:

private fun getContentURL(url: String?) : String {
    var sb = StringBuilder()
    val url = URL(url)
    val urlConnection: HttpURLConnection = url.openConnection() as HttpURLConnection
    val inputStream: InputStream = urlConnection.inputStream
    val isr = InputStreamReader(inputStream)
    val br = BufferedReader(isr)

    var line: String? = ""
    try {
        do {
            line = br.readLine()
            if(line != null){
                sb.append(line)

            }
        }while (line != null)
        br.close()
    }catch (e: Exception){
        Log.d("AAA", e.toString())
    }
    return sb.toString()
}

我认为你们的目标是得到url的响应,对吗?为什么要添加到arrayListData。您可以在底部返回sb.toString()以获取内容,正如您所看到的,我想将数据转换为onPostExecute()的结果,并将其与另一个函数一起使用以处理数据。每个URL,我使用不同的乐趣。我认为不能通过在底部返回sb.toString()来逐个处理onPostExecute()中的URL。