Показывать индикатор выполнения при нажатии на ячейку в адаптере утилизатора, Kotlin, Android Studio - PullRequest
0 голосов
/ 23 февраля 2020

Я пытаюсь показать индикатор выполнения, когда я щелкаю ячейку в представлении переработчика, чтобы показать, что она занята.

У меня есть фрагмент, который при загрузке показывает, что индикатор выполнения не проблема (это просто анимированная строка и не связана с прогрессом).

Я скрываю индикатор выполнения, и когда я щелкаю ячейку в адаптере утилизатора, я пытаюсь сделать индикатор выполнения видимым, но не важно, что выдает ошибку, я пробовал его в привязке, а также вызывал функцию во фрагменте из адаптера утилизатора при щелчке по ячейке, функция работает, но когда она показывает индикатор выполнения как видимый, выдает ошибку,

progressBar не может быть нулевым

вот мой код

В утилите-адаптере

override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
    when(holder) {
        is HistoryRecyclerAdaptor.HistHolder -> {
            holder.bind(items.get(position))


            holder.itemView.setOnClickListener { v ->




                val pdfN1 = holder.pdf.replace("BBBuxD3Uy/Payments/", "")
                val pdfN = pdfN1.replace(".pdf", "")


                var pdfI = mStorageRef!!.child(usernameGet).child("Payments").child("$pdfN1")


                val localFile = File.createTempFile("$pdfN-", ".pdf")
                pdfI.getFile(localFile).addOnSuccessListener {
                    //            findViewById<PDFView>(R.id.activityMainPdfView).fromAsset(localFile.path).show()

                    val fragment = HistoryFragment()
                    fragment.openFile(holder.itemView.context, localFile.path)

                }.addOnFailureListener {
                    // Handle any errors
                }
            }
        }
    }
}

и фрагменте

fun openFile(context: Context, localPath: String?) { // Create URI
    println("Tony Open file hit")
    progressBar2.visibility = View.VISIBLE
    try {
        val file = File(localPath)
        val uri = FileProvider.getUriForFile(
            context,
            context.applicationContext.packageName.toString() + ".provider", file

        )
        val intent = Intent(Intent.ACTION_VIEW)
        println("Tony Open file hit 2")

        if (file.toString().contains(".pdf")) { // PDF file
            intent.setDataAndType(uri, "application/pdf")
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
            intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
            context.startActivity(intent)
            println("Tony Open file hit 3")
        }
    } catch (e: Exception) {
        e.printStackTrace()
    }
}

и ошибка

java .lang.IllegalStateException: progressBar2 не должен быть нулевым

1 Ответ

0 голосов
/ 02 марта 2020

Я нашел ответ.

Я добавил команду для запуска и остановки индикатора выполнения в активности, удерживающей фрагмент.

Затем в адаптере вызвал это для прослушивателя щелчков

(holder.itemView.context as AccountsMainVC).startLoading()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...