在类中添加一个Intent

问题描述 投票:0回答:1

我需要启动一个新的活动以在Fullscreen中显示一个图像,而我的Intent在一个类中,但在我的主类之外。

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)) 因为我不能创建一个基本的Intent。val intent = Intent(this,Home::class.java)startActivity(intent)

而且我需要用val uri将图片加载到我的Image视图中去

先谢谢你。

java android kotlin picasso
1个回答
0
投票

我想问题是 startActivity 不存在于 PhotoItem

那就换吧 GroupieViewHolder 类,并在构造函数中添加像这样的活动。

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

现在用这个字段在 bindPhotoItem 如下:

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))

    }
© www.soinside.com 2019 - 2024. All rights reserved.