Не удается обновить представление переработчика из активности при использовании многопоточности - PullRequest
0 голосов
/ 26 сентября 2019

В своей деятельности я пытаюсь обновить представление переработчика из потока, здесь в основном есть цикл 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)

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...