簡體   English   中英

使用 Kotlin 將片段上的 itemClickCallBack RecyclerView 轉到 DetailActiviy

[英]itemClickCallBack RecyclerView on fragment to DetailActiviy with Kotlin

我嘗試在我的適配器中創建 itemClickCallback 並嘗試在我的片段中實現它。 我的問題是當我點擊卡片時 DetailActivity 無法顯示。

CardViewMovieAdapter

class CardViewMovieAdapter(private val listMovie: ArrayList<Movie>) : RecyclerView.Adapter<CardViewMovieAdapter.CardViewViewHolder>() {

.................

*intent*
                itemView.setOnClickListener {

                    val intent = Intent( context, DetailMovieActivity::class.java)
                    intent.putExtra(DetailMovieActivity.EXTRA_MOVIE, movie)
                    startActivity(context,intent,Bundle())
                }
...............................

interface OnItemClickCallback {
        fun onItemClicked(data: Movie)
    }

}

電影片段

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        ........

*the itmeclikcallback*
        cardViewMovieAdapter.setOnItemClickCallback(object : CardViewMovieAdapter.OnItemClickCallback{
            override fun onItemClicked(data: Movie) {
                showSelectedHero(data)

...............

fun showSelectedHero(movie: Movie) {
        val intent = Intent( context, DetailMovieActivity::class.java)
      intent.putExtra(DetailMovieActivity.EXTRA_MOVIE, movie)
       startActivity(intent)

詳細影片活動

class DetailMovieActivity : AppCompatActivity() {

    companion object{
        const val EXTRA_MOVIE = "extra_movie"
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_detail)

*get data intent*

        val moviesData = intent.getParcelableArrayExtra(EXTRA_MOVIE) as Movie

        val imgPhotoMovie: ImageView = img_item_photo
        val tvMovieNane : TextView = tv_item_name
        val tvMovieDescription : TextView = tv_item_description
        val tvMovieDetail: TextView = tv_item_description2

        tvMovieNane.setText(moviesData.name)
        tvMovieDescription.setText(moviesData.description)
        tvMovieDetail.setText(moviesData.detail)

        Glide.with(this)
            .load(moviesData.photo)
            .into(imgPhotoMovie)

    }
}

如何修復此意圖以顯示帶有數據的 detailActivity?

  1. 在Activity類中沒有startActivity (context, intent, Bundle())這樣的帶參數的方法,有ex這樣的方法。 startActivity(intent, new Bundle()); .

  2. 您不能從視圖中調用 startActivity,您應該通過上下文或活動調用它,例如context.startActivity(...)activity.startActivity(...)您可以在視圖中執行它,例如:

    val intent = Intent(view.context, YourActivity::class.java) view?.context?.startActivity(intent, new Bundle())

所以只需要更換

startActivity (context, intent, Bundle())

context.startActivity(intent)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM