Прокрутка RecyclerView неустойчива - PullRequest
0 голосов
/ 28 мая 2020

Макет элемента моего recyclerView содержит ImageView и пару TextView. Изображение загружается из строки BASE64. Base64 загружается в imageView с помощью библиотеки Glide после преобразования его в массив байтов.

Я знаю, что дрожащая прокрутка вызвана из-за base 64, поскольку я пытался загрузить образец изображения с URL-адреса и после этого прокрутка будет плавной. Но в моем случае я должен использовать Base64, так как это то, как я использую api.

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

Код для загрузки base64 в ImageView:

fun ImageView.loadBase64(base64String: String) {
    val bytes = Base64.decode(base64String, Base64.DEFAULT)
    Glide.with(this.context)
        .load(bytes)
        .thumbnail(0.1f)
        .into(object : CustomTarget<Drawable?>() {
            override fun onLoadCleared(placeholder: Drawable?) {

            }

            override fun onResourceReady(
                resource: Drawable,
                transition: Transition<in Drawable?>?
            ) {
                setImageDrawable(resource)
            }
        })
}

Мой метод onBindViewHolderView


    override fun onBindViewHolder(holder: ProductViewHolder, position: Int) {
        val item = getItem(position)
        item ?: return
//        Glide.with(holder.itemView).load("https://st1.bgr.in/wp-content/uploads/2019/07/Xiaomi-Mi-A3-Gadgets-2.jpg").into(holder.productIV)
        holder.productIV.loadBase64(item.picture)
        holder.priceTV.text = "$ ${item.price}"
        holder.titleTV.text = item.titleFormatted
        holder.productIV.transitionName = item.id.toString()
        holder.itemView.setOnClickListener {
            val extras = FragmentNavigatorExtras(
                holder.productIV to item.id.toString()
            )
            it.findNavController().navigate(
                HomeFragmentDirections.actionStoreHomeToProductDetail(
                    item.id,
                    item.picture,
                    item.titleFormatted
                ), extras
            )
        }
    }

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

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