我有下一个这样的适配器:
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
字段均显示为单视图所需的详细信息。
答案 0 :(得分:1)
考虑到您的items[position].avatarUri
属于Uri类型,请不要调用toString
方法,也许就是问题所在
答案 1 :(得分:0)
Sandesh给出的答案是绝对正确的,如果在使用glide将图像设置为imageview时遇到任何错误,只需添加以下行即可:
.error(R.drawable.your_image)
如果发生任何错误,它将使用您提供的图像在imageview中进行设置。 谢谢您,如果有任何问题,请帮助我改善答案。
答案 2 :(得分:0)
请在您的滑行代码中添加一个侦听器,这样您将得到图像未加载的原因(GlideException)。
services.AddControllers()
.AddJsonOptions(options =>
{
options.JsonSerializerOptions.PropertyNamingPolicy= null;
);