Android 如何从带有holder的url显示imageview
要从url在Imageview上显示图像,我使用以下代码,但没有成功:Android 如何从带有holder的url显示imageview,android,android-glide,Android,Android Glide,要从url在Imageview上显示图像,我使用以下代码,但没有成功: class Article(var id:Int,var nom:String,var lienimg:String, var ifram:String){ } class ArticleAdapter (var articles:ArrayList<Article>) : RecyclerView.Adapter<ArticleAdapter.MyViewHolder>(){ overri
class Article(var id:Int,var nom:String,var lienimg:String, var ifram:String){
}
class ArticleAdapter (var articles:ArrayList<Article>) : RecyclerView.Adapter<ArticleAdapter.MyViewHolder>(){
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
var vue=LayoutInflater.from(parent.context).inflate(R.layout.listeviss, parent, false)
return MyViewHolder(vue)
}
override fun getItemCount(): Int {
return articles.size
}
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
var article = articles.get(position)
holder.nomvisite.setText(article.nom)
holder.lieimgvisite.setText(article.lienimg)
holder.ifram.setText(article.ifram)
var urldelimg:String = "linkmysite.com/image.jpg"
Glide.with(this).load(urldelimg).into(holder.imagedubloc)
}
class MyViewHolder(var vue:View):RecyclerView.ViewHolder(vue){
var nomvisite=vue.findViewById<TextView>(R.id.nom_visitevirtuelle)
var lieimgvisite=vue.findViewById<TextView>(R.id.lienimg)
var ifram=vue.findViewById<TextView>(R.id.ifram)
var imagedubloc=vue.findViewById<ImageView>(R.id.imagedubloc)
}
如何修复此问题并显示图像而不出错?谢谢你,很可能你已经把它传递给了Glide。对于(this)可能引用了这个类,Glide没有接受这个类的构造函数,给它一个类似Glide的视图。对于(holder.yourView),这是给它一个视图,应该可以修复它。下面是我如何使用java实现相同行为的 创建新的
适配器
对象时,需要传递活动上下文。
myRecyclerViewAdapter = new MyAdapter(dataList,getActivity());
在适配器类中创建一个上下文
变量
私有最终上下文代码>
然后在适配器的构造函数中
public MyAdapter(List<MyData> dataSet, Context context)
{
this.dataSet = dataSet;
this.context = context; //this line should be added
}
公共MyAdapter(列表数据集、上下文)
{
this.dataSet=数据集;
this.context=context;//应添加此行
}
最后,您可以按如下方式加载图像
Glide.with(context).load(imageUrl).into(holder.imageView)代码>而不是Glide。使用(this),在适配器的构造函数中提供关联的UI上下文,并使用如下命令:Glide。使用(context)可以共享Adapter@emkarachchi我只是编辑了代码并添加了适配器。你应该尽可能避免这种情况,它不是完全不好,但是你传递上下文的次数越少越好,如果需要从视图中获取上下文,例如在onCreateViewHolder(父:ViewGroup,viewType:Int)中,可以使用parent.contextand和getActivity()获取上下文在可能的情况下,也不应鼓励这样做,因为如果再次从片段调用它,它可能为null。您可以使用view@martinseal1987我是在一个片段类中做这件事的。但是我找不到它变成null
。但是我没有意识到parent.context
这件事。谢谢。Yh我很惊讶IDE没有突出显示它来告诉你这可能是空的。实际上我收回了这个,但是你确实需要一个视图或上下文,所以可能是holder.ifram或holder.ifram.contextif我更改Glide.with(这个)with Glide.with(holder)我也遇到了同样的错误。很抱歉,我提到了将其更改为holder.yourView like holder.ifram.context。例如,我测试这个:Glide.with(holder.imagedubloc.context)。load(urldelimg)。加载到(holder.imagedubloc)应用程序中,但不显示图像。如果还有其他问题,日志会说什么?如果我将Glide.with(this)更改为Glide.with(context)我得到这个错误:分类器“Context”没有伴生对象,因此必须在这里初始化
public MyAdapter(List<MyData> dataSet, Context context)
{
this.dataSet = dataSet;
this.context = context; //this line should be added
}