如何在图像视图中使用putExtra



我正试图使用intet.putExtra将图像视图从一个活动传递到另一个活动。我读过不同的方法,比如将其转换为位图,但该选项似乎不受欢迎。我该怎么做?

这是我的回收器适配器,我有setOnClickListener:

package com.example.newsapp
import android.content.Intent
import android.icu.text.CaseMap
import android.net.Uri
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.AdapterView
import android.widget.ImageView
import android.widget.TextView
import androidx.core.content.ContextCompat.startActivity
import androidx.recyclerview.widget.RecyclerView
import com.example.newsapp.databinding.NewsItemBinding
import com.squareup.picasso.Picasso
class RecyclerAdapter (
private var Titles: List<String>,
private var Images: List<String>,
private var Authors: List<String>,
private var Descriptions: List<String>
) : RecyclerView.Adapter<RecyclerAdapter.ViewHolder>(){
inner class ViewHolder(
view: View
): RecyclerView.ViewHolder(view){
private val binding = NewsItemBinding.bind(view)
val itemTitle: TextView = binding.tvTitle
val itemImage: ImageView = binding.ivNewsImage
fun bind(urlToImage:String){
Picasso.get().load(urlToImage).into(binding.ivNewsImage)
}

init {
itemImage.setOnClickListener{
val intent = Intent(view.context, PostActivity::class.java)
intent.putExtra("title",itemTitle.text)
intent.putExtra("image",itemImage)
view.context.startActivity(intent)
}
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val v = LayoutInflater.from(parent.context).inflate(R.layout.news_item, parent, false)
return ViewHolder(v)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.itemTitle.text = Titles[position]
val itemImage = Images[position]
holder.bind(itemImage)
}
override fun getItemCount(): Int {
return Titles.size
}
}

这是我的PostActivity,它是第二个活动,应该显示第一个活动的图像视图:

package com.example.newsapp
import android.media.Image
import android.os.Bundle
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import com.example.newsapp.databinding.ActivityPostBinding
class PostActivity: AppCompatActivity() {
private lateinit var binding: ActivityPostBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_post)
binding = ActivityPostBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
//get title
var detailTitle = intent.getStringExtra("title")
binding.tvTitleItem.text = detailTitle
//get image, not completed yet
var detailImage = intent.getStringExtra("image")
binding.ivNewsImageDetail = detailImage
}
}

我正试图使用intet.putExtra 将图像视图从一个活动传递到另一个活动

抱歉,但这不是一个选项。

这是我的PostActivity,它是第二个活动,应该显示第一个活动的图像视图

它应该显示第一个活动中显示的图像

您的第一个活动是从URL获取该图像。因此,您可以将额外的URL传递给第二个活动,并让第二个行动从该URL中获取图像。由于您使用的是图像加载库(Picasso(,因此可以确保该库缓存图像本身的实际字节,以便您只下载一次图像内容。

您必须传递图像url,而不是图像视图

请更换

intent.putExtra("image",itemImage)

带有

intent.putExtra("image",itemTitle.image)

最新更新