如何解决从适配器接收数据到DetailsActivity?
我想知道如何从适配器(recyclerview)到DetailsActivity接收数据。我尝试了很多次,但是来自recyclerview的图像未显示在DetailsActivity中。 这是我的代码。
ImageAdapter
class ImageAdapter (private var items:List<Item>,private val context:Context):
RecyclerView.Adapter<ImageAdapter.ViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup,viewType: Int):ViewHolder {
return ViewHolder(
LayoutInflater.from(context).inflate(R.layout.item,parent,false)
)
}
override fun getItemCount(): Int {
return items.size
}
override fun onBindViewHolder(holder: ImageAdapter.ViewHolder,position: Int) {
val item = items[position]
Picasso.get().load(item.imageUrl).into(holder.imageView)
holder.imageView.setonClickListener {
val intent = Intent(context,DetailsActivity::class.java)
intent.putExtra("iImages",item.imageUrl)
context.startActivity(intent)
}
}
class ViewHolder(view:View):RecyclerView.ViewHolder(view) {
val imageView : ImageView = view.findViewById(R.id.imageView)
}
}
DetailsActivity
class DetailsActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_details)
val aimageView = intent.getIntExtra("iImages",0)
details_image.setimageResource(aimageView)
}
}
RecyclerActivity
class RecyclerActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_recycler)
val storage = FirebaseStorage.getInstance()
val storageRef = storage.reference.child("wallpapers")
val imageList : ArrayList<Item> = ArrayList()
//progressBar.visibility = View.VISIBLE
val listAllTask : Task<ListResult> = storageRef.listAll()
listAllTask.addOnCompleteListener { result ->
val items: List<StorageReference> = result.result!!.items
//add cycle for add image url to list
items.forEachIndexed { index,item ->
item.downloadUrl.addOnSuccessListener {
Log.d("item","$it")
imageList.add(Item(it.toString()))
}.addOnCompleteListener {
recyclerview.adapter = ImageAdapter(imageList,this)
recyclerview.layoutManager = linearlayoutmanager(this,linearlayoutmanager.HORIZONTAL,false)
//progressBar.visibility = View.GONE
}
}
}
}
}
项目 数据类Item( var imageUrl:字符串 )
解决方法
问题是这一行:
details_image.setImageResource(aImageView)
您正在设置资源int,但是您传递的内容似乎是一个url,因此请使用该视图的Picasso加载“ iImages”值
编辑:替换为:
val aImageView = intent.getIntExtra("iImages",0)
details_image.setImageResource(aImageView)
与此
val retrievedImageUrl = intent.getIntExtra("iImages",0)
Picasso.get().load(retrievedImageUrl).into(details_image)
,
答案
val imageView : ImageView = findViewById(R.id.details_image)
Glide.with(this).load(intent.getStringExtra("iImages")).into(imageView)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。