В своей деятельности я пытаюсь обновить представление переработчика из потока, здесь в основном есть цикл for, который мне нужно поместить в поток, чтобы он не перестал отвечать на мое приложение, я попробовал все, как runonuithread, сопрограммы, ноТем не менее, ни один из них не помогает здесь, поскольку for успешно выполняется, и мой массив успешно заполнен соответствующими данными, но когда я попытался обновить свое представление переработчика, это не работает, вот метод, который я использую в своей деятельности:
private fun loadNextPage(){
var islast1 = false
mMainFolderImagesAdapter!!.removeLoadingFooter()
val tempImages = ArrayList<String>()
if (mMainFolderImagesAdapter!!.itemCount + 50 <= mImageItems.size) {
Thread(object:Runnable {
override fun run() {
for (i in mMainFolderImagesAdapter!!.itemCount until mMainFolderImagesAdapter!!.itemCount + 50) {
Log.i("okay", "Executed")
tempImages.add(mImageItems[i])
}
Handler(Looper.getMainLooper()).post {
// Code here will run in UI thread
// Stuff that updates the UI
Log.i("hmm",tempImages.size.toString())
mMainFolderImagesAdapter!!.updateResult1(tempImages)
changeCount(mImageItems.size)
isLoading = false
}
}
}).start()
}
else
{
Thread(object:Runnable {
override fun run() {
for (i in mMainFolderImagesAdapter!!.itemCount until mImageItems.size)
{
tempImages.add(mImageItems[i])
}
runOnUiThread {
mMainFolderImagesAdapter!!.updateResult1(tempImages)
changeCount(mImageItems.size)
isLoading = false
islast1 = true
}
}
}).start()
}
if (currentPage != totalpage) {
mMainFolderImagesAdapter!!.addLoadingFooter()
} else {
isLastPage = true
}
if (islast1) {
mMainFolderImagesAdapter!!.setlast()
}
}
Вот метод, который я пытаюсь вызвать в классе моего адаптера:
fun updateResult1(imageItems: ArrayList<String>) {
thumbPaths.addAll(imageItems)
notifyItemRangeInserted(itemCount, thumbPaths.size)
}