Android 毕加索抛出;未解析引用“;对于我的imageView,但它已在ViewHolder中声明
我试图使用毕加索加载带有JSON图像的RecyclerView,但问题是毕加索无法识别我的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
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
的初学者。我觉得很有帮助。除此之外,如果你被困在某个地方,欢迎你在这里询问。你可以在评论中标记用户以引起他们的注意(我不知道它是否有效)。是的,但是这个网站对初学者来说是不受欢迎的。我已经因为提出一个合理的问题而投了反对票。