En el código del adaptador, utilicé la intención normal. Sé que esta no es la forma correcta de hacerlo. Pero aún quiero conocer el enfoque.

Código de adaptador

holder.rlContent.setOnClickListener {
            val intent = Intent(context, RestaurantMenuActivity::class.java)
            intent.putExtra("restaurantId", restaurant.restaurantId)
            intent.putExtra("restaurantName", holder.txtRestaurantName.text.toString())
            intent.putExtra("restaurantImage",holder.restaurantImage.toString())
            intent.putExtra("restaurantPrice",holder.txtRestaurantPrice.toString())
            intent.putExtra("restaurantRating",holder.txtRestaurantRating.toString())
            context.startActivity(intent)
        }

En el código de actividad, obtuve la imagen así:

val bundle: Bundle? = intent.extras
        bundle?.getString("restaurantImage")?.let {
            Picasso.get().load(it).error(R.drawable.restaurant_image)
                .into(restaurantImage)

Esto siempre muestra la imagen de error y no la imagen original.

0
yazhini 9 jul. 2021 a las 09:20

3 respuestas

La mejor respuesta

Lo que está haciendo en su código es convertir las vistas reales que se están renderizando en cadenas y pasarlas a la siguiente actividad. En su lugar, debería pasar los valores que está configurando en esas vistas.

//This is wrong. This is converting the views into strings 
//and passing them to the next activity which is useless
val intent = Intent(context, RestaurantMenuActivity::class.java)
intent.putExtra("restaurantId", restaurant.restaurantId)
intent.putExtra("restaurantName", holder.txtRestaurantName.text.toString())
intent.putExtra("restaurantImage",holder.restaurantImage.toString())
intent.putExtra("restaurantPrice",holder.txtRestaurantPrice.toString())
intent.putExtra("restaurantRating",holder.txtRestaurantRating.toString())
context.startActivity(intent)

//Do this instead - Notice I changed holder.* to your actual restaurant object
val intent = Intent(context, RestaurantMenuActivity::class.java)
intent.putExtra("restaurantId", restaurant.restaurantId)
intent.putExtra("restaurantName", restaurant.name)
intent.putExtra("restaurantImage",restaurant.image.toString())
intent.putExtra("restaurantPrice", restaurant.price.toString())
intent.putExtra("restaurantRating", restaurant.rating.toString())
context.startActivity(intent)
0
Bilal Naeem 9 jul. 2021 a las 07:00

No pase holder.restaurant_imageview en su lugar, pase la URL de su imagen de la clase de modelo. también asegúrese de hacer esto en su onBindViewHolder

val restaurantItem = getItem(position)

// check if the item is not null

if(restaurantItem != null) {

   // share the data via intent from here

    val intent = Intent(context, RestaurantMenuActivity::class.java)
    intent.putExtra("restaurantId", restaurant.restaurantId)
    intent.putExtra("restaurantName", restaurant.name)
    intent.putExtra("restaurantImage",restaurant.image.toString())
    intent.putExtra("restaurantPrice", restaurant.price.toString())
    intent.putExtra("restaurantRating", restaurant.rating.toString())
    context.startActivity(intent)

}

0
Illustrator 9 jul. 2021 a las 08:27

Intenta así.

    var imageUrl=""
    if( intent.extras != null) {
        imageUrl= intent.getStringExtra("restaurantImage")
    }
    
    Picasso.get().load(imageUrl).error(R.drawable.restaurant_image)
            .into(restaurantImage)
0
Sandeep Pareek 9 jul. 2021 a las 06:26