我对Kotlin的Android手机编程是个新手.我想试着从许多教程中为我的实验和Android移动编程学习制作自己的电影 list .
所以,我想试着明确的意图,从电影列表开始,其中一个被点击到我点击的电影信息中.
在MainActivity.kt中从JSON获得电影数据集之后,我使用MainActivity.kt中的以下代码来实现MovieAdapter类(MovieAdapter.kt)
val customAdapter = MovieAdapter(moviePoster, movieTitle, movieYear, movieGenre, movieDirectors, movieRunTime, movieRating, movieActors, movieOverview, this@MainActivity)
recyclerView.setAdapter(customAdapter)
这是MovieAdapter类(MovieAdapter.kt)
class MovieAdapter(var moviePoster: ArrayList<String>,
var movieTitle: ArrayList<String>,
var movieYear: ArrayList<String>,
var movieGenre: ArrayList<String>,
var movieDirectors: ArrayList<String>,
var movieRunTime: ArrayList<String>,
var movieRating: ArrayList<String>,
var movieActors: ArrayList<String>,
var movieOverview: ArrayList<String>, var ctx: Context) : RecyclerView.Adapter<MovieAdapter.MyViewHolder>()
然后在MovieAdapter.kt(MovieAdapter类)中,如下面的代码所示
override fun onBindViewHolder(holder: MyViewHolder, position: Int)
{
holder.moviePoster.tag = moviePoster[position]
holder.movieTitle.text = movieTitle[position]
holder.movieYear.text = movieYear[position]
holder.movieGenre.text = movieGenre[position]
val moviePosterDetail = moviePoster[position]
val movieTitleDetail = movieTitle[position]
val movieYearDetail = movieYear[position]
val movieGenreDetail = movieGenre[position]
val movieDirectorDetail = movieDirectors[position]
val movieTimeDetail = movieRunTime[position]
val movieRatingDetail = movieRating[position]
val movieActorsDetail = movieActors[position]
val movieDescriptionDetail = movieOverview[position]
holder.itemView.setOnClickListener{
Intent(ctx, MovieDetail::class.java).also {
it.putExtra("moviePoster", moviePosterDetail)
it.putExtra("movieTitle", movieTitleDetail)
it.putExtra("movieYear", movieYearDetail)
it.putExtra("movieGenre", movieGenreDetail)
it.putExtra("movieDirector", movieDirectorDetail)
it.putExtra("movieTime", movieTimeDetail)
it.putExtra("movieRating", movieRatingDetail)
it.putExtra("movieActors", movieActorsDetail)
it.putExtra("movieDescription", movieDescriptionDetail)
startActivity(it)
}
}
}
在startActivity(It)部分中,下面有一个错误
类型不匹配. 必需:上下文 找到:意向 没有为参数‘Intent’传递任何值 没有为参数‘Options’传递任何值
但在其他文件中执行startActivity(It)部件时(在MainActivity.kt文件中),此处未检测到错误.
那么,为什么会发生这种情况,我该怎么做呢? 如果我必须在startActivity()中使用上下文和选项参数,我应该如何填充startActivity()函数中的参数呢?