Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何从带有holder的url显示imageview_Android_Android Glide - Fatal编程技术网

Android 如何从带有holder的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

要从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>(){
    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
}