Android 显示带有recyclerview和改装的图像
我的应用程序中有一个问题,我需要用recyclerview显示一个图像,但我得到了一个空对象Android 显示带有recyclerview和改装的图像,android,kotlin,Android,Kotlin,我的应用程序中有一个问题,我需要用recyclerview显示一个图像,但我得到了一个空对象 class AllSubscribersAdapter(val context: Context, private val subsribedChannels: SubscribedChannels): RecyclerView.Adapter<AllSubscribersAdapter.ViewHolder>() { private var channels: List<C
class AllSubscribersAdapter(val context: Context, private val subsribedChannels: SubscribedChannels): RecyclerView.Adapter<AllSubscribersAdapter.ViewHolder>() {
private var channels: List<Channels> = listOf()
init {
channels = subsribedChannels.channels
}
override fun onCreateViewHolder(parent: ViewGroup, position: Int): ViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.subscribers_item, parent, false)
return ViewHolder(view)
}
override fun getItemCount(): Int {
return channels.size
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.tvChannelName.text = channels[position].name
Glide.with(holder.channel_img)
.load(channels[position].avatar)
.transform(CircleCrop())
.into(holder.channel_img)
/*Picasso.get()
.load(channels[position].avatar)
.fit()
.into(holder.channel_img)*/
}
fun setChannelsList(channels: List<Channels>){
this.channels = channels
notifyDataSetChanged()
}
class ViewHolder(itemView: View?) : RecyclerView.ViewHolder(itemView!!) {
var tvChannelName: TextView = itemView!!.findViewById(R.id.channel_name)
var channel_img: ImageView = itemView!!.findViewById(R.id.channel_image)
}
}
class AllSubscriberAdapter(val context:context,private val SubscribedChannels:SubscribedChannels):RecyclerView.Adapter(){
私有变量通道:List=listOf()
初始化{
频道=子订阅频道。频道
}
override onCreateViewHolder(父级:ViewGroup,位置:Int):ViewHolder{
val view=LayoutInflater.from(parent.context).充气(R.layout.subscribers\u项,parent,false)
返回视图保持器(视图)
}
重写getItemCount():Int{
返回通道大小
}
覆盖BindViewHolder(holder:ViewHolder,位置:Int){
holder.tvChannelName.text=频道[位置].name
滑动(保持架通道\u img)
.load(频道[位置].avatar)
.transform(CircleCrop())
.插入(支架通道\u img)
/*毕加索
.load(频道[位置].avatar)
.fit()
.插入(支架通道\u img)*/
}
趣味设置频道列表(频道:列表){
this.channels=频道
notifyDataSetChanged()
}
类视图持有者(itemView:View?):RecyclerView.ViewHolder(itemView!!){
var tvChannelName:TextView=itemView!!.findviewbyd(R.id.channel\u name)
var channel\u img:ImageView=itemView!!.findviewbyd(R.id.channel\u image)
}
}
频道名称正在工作,但频道图像为空,欢迎提供任何帮助。这是我的模型课
class SubscribedChannels (
var channels: List<Channels>
): Serializable
data class Channels(
var id: String,
var name: String,
var slug: String,
var avatar: String,
var created_by: String,
var subscribers: String
): Serializable
类订阅频道(
变量通道:列表
):可序列化
数据类通道(
变量id:String,
变量名称:String,
变量slug:String,
var阿凡达:字符串,
变量创建人:String,
变量订阅者:字符串
):可序列化
我不知道这里是否有问题。首先,您不能在
ViewHolder
类中初始化变量。
您应该在构造函数中这样做
var tvChannelName: TextView?=null
var channel_img: ImageView?=null
init{
tvChannelName = itemView!!.findViewById(R.id.channel_name)
channel_img = itemView!!.findViewById(R.id.channel_image)
}
如果您在改装响应中得到空字符串,那么您必须检查字符串,然后您必须调用底部holder.tvChannelName.text处的glide
,您可以记录香奈儿。如果Avatar不为空,您可以检查值是否具有有效的图像url请发布改装响应并发布logcatpost什么是频道的类型和值[position]。如果该值为空,则您的问题不在于适配器,而在于Reformation.share R.layout.subscribers\u项目xml代码(如果您正在获取频道\u图像)(ImageView)FindView中的null是否回答了您的问题?是否回答了您的问题?