Добавить намерение в классе - PullRequest
0 голосов
/ 23 апреля 2020

Мне нужно начать новое задание, чтобы показать изображение в полноэкранном режиме, и мое намерение находится в классе, но за пределами моего основного класса.

class PhotoItem(val user: String, val send: String, val timestamp: Long, val country: String): Item<GroupieViewHolder>(){

override fun bind(viewHolder: GroupieViewHolder, position: kotlin.Int) {


    viewHolder.itemView.textView10.text = user
    viewHolder.itemView.textView13.text = timestamp.toString()
    viewHolder.itemView.textView14.text = country
    val uri = send
    val targetImageView = viewHolder.itemView.selectphoto_imageview
    val targetImageViewFullScreen = viewHolder.itemView.fullscreen
    Picasso.get().load(uri).into(targetImageView)
    viewHolder.itemView.setOnClickListener{v : View ->

        v.getContext().startActivity(Intent(v.getContext(), FullscreenPhoto::class.java))


    }

}
override fun getLayout(): kotlin.Int {
    return R.layout.photo_from_row


}
}

Итак, я нашел эту строку: v.getContext().startActivity(Intent(v.getContext(), FullscreenPhoto::class.java)), потому что я могу не создавать основы c Намерение: val intent = Intent(this,Home::class.java)startActivity(intent)

И мне нужно иметь значение для загрузки изображения в мой режим просмотра изображений

Заранее спасибо.

1 Ответ

0 голосов
/ 23 апреля 2020

Полагаю, проблема в том, что startActivity недоступен в PhotoItem

. Поэтому измените класс GroupieViewHolder и добавьте активность в конструктор следующим образом:

class GroupieViewHolder(val activity: Activity, /* other arguments */)

Теперь используйте это поле в bind из PhotoItem, как показано ниже:

override fun bind(viewHolder: GroupieViewHolder, position: kotlin.Int) {


    // other codes.........

    viewHolder.itemView.setOnClickListener{v : View ->

        // using activity field for startActivity
        viewHolder.activity.startActivity(Intent(v.getContext(), FullscreenPhoto::class.java))

    }
...