Android 毕加索抛出;未解析引用“;对于我的imageView,但它已在ViewHolder中声明

Android 毕加索抛出;未解析引用“;对于我的imageView,但它已在ViewHolder中声明,android,json,kotlin,picasso,Android,Json,Kotlin,Picasso,我试图使用毕加索加载带有JSON图像的RecyclerView,但问题是毕加索无法识别我的imageView,尽管它是在ViewHolder中声明的 import android.support.v7.widget.RecyclerView import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.ImageView import

我试图使用毕加索加载带有JSON图像的RecyclerView,但问题是毕加索无法识别我的
imageView
,尽管它是在ViewHolder中声明的

import android.support.v7.widget.RecyclerView
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import com.squareup.picasso.Picasso
import kotlinx.android.synthetic.main.list_item.view.*

class PosterAdapter(val movieData: Movies) : RecyclerView.Adapter<PosterHolder>(){
    val movieList = mutableListOf<Movies>()

    override fun getItemCount(): Int { return movieList.size }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PosterHolder{

        val layoutInflater = LayoutInflater.from(parent?.context)
        val listItem = layoutInflater.inflate(R.layout.list_item, parent, false)
        return PosterHolder(listItem)
    }

    override fun onBindViewHolder(holder: PosterHolder, position: Int) {
        Picasso
                .get()
                .load("" + R.string.base_URL + "" + movieData.moviePoster)
                .into(PosterHolder.imageView)//identifier imageView is red

        holder.view.movie_poster?.scaleType = ImageView.ScaleType.FIT_CENTER
    }
}

class PosterHolder(val view: View) : RecyclerView.ViewHolder(view), View.OnClickListener {
    var imageView: ImageView? = null

    fun PosterHolder(view: View){ this.imageView = view.findViewById<View>(R.id.movie_poster) as ImageView }

    override fun onClick(p0: View?) {}
}
导入android.support.v7.widget.RecyclerView
导入android.view.LayoutInflater
导入android.view.view
导入android.view.ViewGroup
导入android.widget.ImageView
导入com.squareup.picasso.picasso
导入kotlinx.android.synthetic.main.list_item.view*
类PosterAdapter(val movieData:Movies):RecyclerView.Adapter(){
val movieList=mutableListOf()
重写fun getItemCount():Int{return movieList.size}
重写onCreateViewHolder(父级:ViewGroup,viewType:Int):PosterHolder{
val layoutInflater=layoutInflater.from(父?.context)
val listItem=LayoutFlater.充气(R.layout.list_项,父项,false)
返回PosterHolder(列表项)
}
覆盖BindViewHolder(holder:PosterHolder,位置:Int){
毕加索
.get()
.load(“+R.string.base_URL+”+movieData.moviePoster)
.into(PosterHolder.imageView)//标识符imageView为红色
holder.view.movie\u poster?.scaleType=ImageView.scaleType.FIT\u CENTER
}
}
类PosterHolder(val视图:视图):RecyclerView.ViewHolder(视图),view.OnClickListener{
var imageView:imageView?=null
趣味PosterHolder(视图:视图){this.imageView=view.findViewById(R.id.movie\u poster)作为imageView}
覆盖有趣的onClick(p0:View?{}
}

您的代码中有两个问题。第一个问题是您正在url中以
R.string.base\u url
的形式传递资源id。您应该读取资源并传递它的值,而不是id。 将基url声明为全局url

private var BASE_URL: String?=null
在适配器中获取上下文

BASE_URL=context.resources.getString(R.string.base_URL)
或者您可以在构造函数中传递
BASE\u URL
本身

第二个问题是应该使用
holder.imageView
而不是
PosterHolder.imageView

Picasso
            .get()
            .load(BASE_URL + movieData.moviePoster)
            .into(holder.imageView)

代码中有两个问题。第一个问题是您正在url中以
R.string.base\u url
的形式传递资源id。您应该读取资源并传递它的值,而不是id。 将基url声明为全局url

private var BASE_URL: String?=null
在适配器中获取上下文

BASE_URL=context.resources.getString(R.string.base_URL)
或者您可以在构造函数中传递
BASE\u URL
本身

第二个问题是应该使用
holder.imageView
而不是
PosterHolder.imageView

Picasso
            .get()
            .load(BASE_URL + movieData.moviePoster)
            .into(holder.imageView)

holder.view.movie\u海报
。您使用的符号用于静态(伴生)对象,而您正在
支架内查找成员
电影海报
object@Simon对不起,你到底指的是什么?
moviePoster
movie\u poster
是不同的
moviePoster
是我的数据类中的一个属性。
holder.view.movie\u poster
。您使用的符号用于静态(伴生)对象,而您正在
支架内查找成员
电影海报
object@Simon对不起,你到底指的是什么?
moviePoster
movie\u poster
是不同的
moviePoster
是我的数据类中的一个属性。
BASE\u URL
在我的MainActivity.kt中声明,然后将其传递给适配器。不要只使用
R.string.base\u URL
。我还有更多的Kotlin问题。你可以再聊一会儿吗?我在解析JSON数据时遇到问题。我也是
kotlin
的初学者。我觉得很有帮助。除此之外,如果你被困在某个地方,欢迎你在这里询问。你可以在评论中标记用户以引起他们的注意(我不知道它是否有效)。是的,但是这个网站对初学者来说是不受欢迎的。我已经因为问了一个合法的问题而被否决了。
BASE\u URL
在我的MainActivity.kt中声明,然后将它传递给适配器。不要只使用
R.string.base\u URL
。我还有更多的Kotlin问题。你可以再聊一会儿吗?我在解析JSON数据时遇到问题。我也是
kotlin
的初学者。我觉得很有帮助。除此之外,如果你被困在某个地方,欢迎你在这里询问。你可以在评论中标记用户以引起他们的注意(我不知道它是否有效)。是的,但是这个网站对初学者来说是不受欢迎的。我已经因为提出一个合理的问题而投了反对票。