我把https://dummyjson.com/products的json数据解析到了jscleview中。显示产品列表。然后我在item上设置onclcik侦听器,并将图像和描述,价格解析为新的Activity。价格和描述是解析成新的活动BT图像不显示
MyAdapter.kt
package com.fiham.retroapi
import android.app.Activity
import android.content.Intent
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import android.widget.Toast
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.recyclerview.widget.RecyclerView
import com.squareup.picasso.Picasso
class MyAdapter (val context: Activity , val productArrayList : List<Product>) :
RecyclerView.Adapter<MyAdapter.MyViewHolder> (){
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
val itemview = LayoutInflater.from(context).inflate(R.layout.single_item, parent, false)
return MyViewHolder(itemview )
}
override fun getItemCount(): Int {
return productArrayList.size
}
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
val currentItem = productArrayList[position]
holder.title.text = currentItem.title
holder.rating.text = currentItem.rating.toString()
//imageview
Picasso.get().load(currentItem.thumbnail).into(holder.image)
holder.constraint_row.setOnClickListener {
val cont = holder.constraint_row.context
val intent = Intent(it.context, ProductDetails::class.java)
intent.putExtra("image" , currentItem.thumbnail)
intent.putExtra("price" , currentItem.price)
intent.putExtra("description" , currentItem.description)
it.context.startActivity(intent)
}
}
class MyViewHolder (itemview : View) : RecyclerView.ViewHolder (itemview) {
var title : TextView
var rating : TextView
var image : ImageView
var constraint_row : ConstraintLayout = itemview.findViewById(R.id.constraint_row)
init {
title = itemview.findViewById(R.id.tv2)
image = itemview.findViewById(R.id.iv1)
rating = itemview.findViewById(R.id.rating)
}
}
}
Prodcut.kt
package com.fiham.retroapi
data class Product(
val brand: String,
val category: String,
val description: String,
val discountPercentage: Double,
val id: Int,
val images: List<String>,
val price: Int,
val rating: Double,
val stock: Int,
val thumbnail: String,
val title: String
)
Productdetails.kt
package com.fiham.retroapi
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.ImageView
import android.widget.TextView
class ProductDetails : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_product_details)
val thumbnail = findViewById<ImageView>(R.id.thumbnail)
val instock = findViewById<TextView>(R.id.instock)
val desc = findViewById<TextView>(R.id.desc)
val intent = intent
val image = intent?.getIntExtra("image" , 0 )
val price = intent?.getIntExtra("price" ,0)
val description = intent?.getStringExtra("description" )
if (image != null) {
thumbnail.setImageResource(image).toString()
}
instock.text = price.toString()
desc.text = description
}
}
我想解析图像到新的活动来自我的适配器
2条答案
按热度按时间iih3973s1#
当我们传递一个类型的数据时,我们必须接收这个相同类型的数据
问题是您从类型传递数据,并从另一个类型接收此数据
MyAdapter.kt
产品详情.kt
fkaflof62#
你必须用这个
注意R.drawable.no_image是默认图片,当没有得到任何数据时,则显示此图片默认值