我访问了一个为RecyclerView返回数组的函数。如何加载异步数组? 我这样加载函数:
var content = ContentList().list(navBarTitle)
ContentList类:
class ContentList {
fun list(title : String):Array<Array<Int>>
{
var contentTitle : Array<Array<Int>>
if (title == "Hijaiyyah Letters")
contentTitle = arrayOf(
arrayOf(R.drawable.ic_intro1_1, R.raw.ahem_x),
arrayOf(R.drawable.ic_intro1_2, R.raw.bad_disk_x),
arrayOf(R.drawable.ic_intro1_3, R.raw.baseball_hit),
arrayOf(R.drawable.ic_intro1_4, R.raw.bloop_x),
arrayOf(R.drawable.ic_intro1_5, R.raw.blurp_x),
arrayOf(R.drawable.ic_intro1_6, R.raw.blurp_x),
arrayOf(R.drawable.ic_intro1_7, R.raw.ahem_x),
arrayOf(R.drawable.ic_intro1_8, R.raw.bad_disk_x),
arrayOf(R.drawable.ic_intro1_9, R.raw.baseball_hit),
arrayOf(R.drawable.ic_intro1_10, R.raw.bloop_x),
arrayOf(R.drawable.ic_intro1_11, R.raw.ahem_x),
arrayOf(R.drawable.ic_intro1_12, R.raw.bad_disk_x),
arrayOf(R.drawable.ic_intro1_13, R.raw.baseball_hit),
arrayOf(R.drawable.ic_intro1_14, R.raw.bloop_x),
arrayOf(R.drawable.ic_intro1_15, R.raw.blurp_x),
arrayOf(R.drawable.ic_intro1_16, R.raw.ahem_x),
arrayOf(R.drawable.ic_intro1_17, R.raw.bad_disk_x),
arrayOf(R.drawable.ic_intro1_18, R.raw.baseball_hit),
arrayOf(R.drawable.ic_intro1_19, R.raw.bloop_x),
arrayOf(R.drawable.ic_intro1_20, R.raw.blurp_x),
arrayOf(R.drawable.ic_intro1_21, R.raw.bloop_x),
arrayOf(R.drawable.ic_intro1_22, R.raw.ahem_x),
arrayOf(R.drawable.ic_intro1_23, R.raw.bad_disk_x),
arrayOf(R.drawable.ic_intro1_24, R.raw.baseball_hit),
arrayOf(R.drawable.ic_intro1_25, R.raw.bloop_x),
arrayOf(R.drawable.ic_intro1_26, R.raw.blurp_x),
arrayOf(R.drawable.ic_intro1_27, R.raw.ahem_x),
arrayOf(R.drawable.ic_intro1_28, R.raw.bad_disk_x),
arrayOf(R.drawable.ic_intro1_29, R.raw.baseball_hit),
arrayOf(R.drawable.ic_intro1_30, R.raw.bloop_x),
arrayOf(R.drawable.ic_intro1_31, R.raw.blurp_x)
)
else if(title == "Fat-hah Vowel 1")
contentTitle = arrayOf(
arrayOf(R.drawable.ic_fathah1_1, R.raw.ahem_x),
arrayOf(R.drawable.ic_fathah1_2, R.raw.bad_disk_x),
arrayOf(R.drawable.ic_fathah1_3, R.raw.baseball_hit),
arrayOf(R.drawable.ic_fathah1_4, R.raw.bloop_x),
arrayOf(R.drawable.ic_fathah1_5, R.raw.blurp_x)
)
else
contentTitle = arrayOf(
arrayOf(R.drawable.ic_tbr, R.raw.ahem_x),
arrayOf(R.drawable.ic_tbr, R.raw.bad_disk_x),
arrayOf(R.drawable.ic_tbr, R.raw.baseball_hit),
arrayOf(R.drawable.ic_tbr, R.raw.bloop_x),
arrayOf(R.drawable.ic_tbr, R.raw.blurp_x)
)
return contentTitle
}
}
我还有很多东西可以填充数组,但是应用程序已经落后了,所以我正在考虑异步方法。我用谷歌搜索了Kotlin异步方法,但是看到了有关为其创建新函数的信息吗?非常感谢任何指针/建议。提前数百万个thanx ...
答案 0 :(得分:1)
您可以使用Kotlin coroutine
。您可以尝试以下代码
CoroutineScope(Dispatchers.Main).launch {
val content = async(Dispatchers.IO) {
ContentList().list(navBarTitle)
}
// result will have returned value of `list()` function
var result = content.await()
}
}
因此,我们正在从协程访问list()
,它必须是suspend
函数
suspend fun list(title : String): Array<Array<Int>> { }