Glide не помещает изображение в imageView - PullRequest
0 голосов
/ 24 января 2020

У меня есть следующий адаптер, как это:

class ChatAdapter(chatItems: List<User>,
                  context: MainActivity) : RecyclerView.Adapter<ChatAdapter.ChatItemHolder>() {

    private val items= chatItems
    private val context = context

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ChatItemHolder {
        val itemView = LayoutInflater.from(parent.context).inflate(R.layout.chat_item, parent, false)
        return ChatItemHolder(itemView)
    }

    override fun getItemCount(): Int = items.size

    override fun onBindViewHolder(holder: ChatItemHolder, position: Int) {
        holder.firstName?.text = items[position].firstName
        holder.lastName?.text = items[position].lastName
        holder.initials?.text = setInitials(items[position].firstName, items[position].lastName )
        Log.d("__test__", items[position].avatarUri.toString())

     // Probleme is here
    Glide.with(context)
                .load(items[position].avatarUri.toString())
                .centerCrop()
                .into(holder.avatar)
        holder.isOnline?.visibility = if (items[position].online) View.VISIBLE else View.GONE
    }

    inner class ChatItemHolder(chatItem: View) : RecyclerView.ViewHolder(chatItem){
        var firstName: TextView? = null
        var lastName: TextView? = null
        var initials: TextView? = null
        var avatar: ImageView
        var isOnline: View? = null
        init {
            firstName = chatItem.findViewById(R.id.tv_first_name)
            lastName =chatItem.findViewById(R.id.tv_last_name)
            initials = chatItem.findViewById(R.id.tv_initials)
            avatar = chatItem.findViewById(R.id.iv_avatar)
            isOnline = chatItem.findViewById(R.id.online)
        }
    }

    private fun setInitials(fn: String?, ln: String?): String {
        return if (ln.isNullOrEmpty())
            fn!!.first().toString() else fn!!.first().toString() + ln.first()
    }
}

, но когда я запускаю свой код, все работы корректно исключают Glide, но изображение не появляется. Почему? Остальные детали моих recyclerView работают правильно, поля firstName, lastName, isOnline отображают все детали, требующие детального просмотра.

Ответы [ 3 ]

1 голос
/ 24 января 2020

Учитывая, что ваш items[position].avatarUri относится к типу Uri, не вызывайте метод toString, возможно, в этом проблема

0 голосов
/ 24 января 2020

Пожалуйста, добавьте слушателя в свой код скольжения, чтобы вы получили причину (GlideException), почему ваше изображение не загружается.

.listener(new RequestListener<Drawable>() {
                @Override
                public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
                 //on load failed
                    return false;
                }

                @Override
                public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
                    //on load success
                    return false;
                }
        })
0 голосов
/ 24 января 2020

Ответ, данный Sande sh Абсолютно правильно, и если у вас возникли какие-либо ошибки при настройке изображения для просмотра изображений с помощью glide, просто добавьте строку ниже:

.error(R.drawable.your_image)

Он будет использовать изображение, предоставленное вами для установки в просмотр изображения, если произошла какая-либо ошибка. Спасибо и помогите мне улучшить мой ответ, если что-то не так.

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