我觉得我的问题很简单,但是我刚开始在android上的路,所以现在是个大问题,反正我想从url读取文本,转换成数组,显示成ListView。
下面是我的部分代码:
private fun getSongList() {
Executors.newSingleThreadExecutor().execute() {
val songList =
URL("https://vivalaresistance.ru/radio/stuff/vlrradiobot.php?type=getPlaylist").readText(
Charset.forName("windows-1251")
)
.replace("й", "й")
.replace("Й", "Й")
.split("\n").toTypedArray()
}
val list = view?.findViewById<ListView>(R.id.list)
val arrayAdapter =
ArrayAdapter(requireActivity(), android.R.layout.simple_list_item_1, songList)
list?.adapter = arrayAdapter
}
我想问题出在声明值上。
我该做些什么改变才能让整件事成功呢?
1条答案
按热度按时间cotxawn71#
您的代码存在以下几个问题:
HttpUrlConnection
的连接Executors.newSingleThreadExecutor().execute()
中更新UI代码,应始终在UI线程上更新UIRecylerView
而不是ListView
,使用dataBinding而不是view reference,并且不应将UI代码和后台代码放在同一个类中因此,使用匿名
asyncTask
实现函数的正确方法是:假设您要对结果而不是url本身执行split/replace操作