es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Array de imágenes de mapa de bits desde RecyclerView a otra actividad con posición

Quiero obtener una imagen única de una matriz de mapas de bits de RecyclerView y mostrarla en mi actividad de detalles

[Clase adaptadora de RecyclerView]

public void onBindViewHolder(@NonNull viewholder holder, @SuppressLint(“RecyclerView”) int position) {

    modelo modelo= lista.get(position);

    byte[] imagen=lista.get(position).getImagen();
    Bitmap mapaBits= BitmapFactory.decodeByteArray(imagen,0,imagen.length);

    holder.imageView.setImageBitmap(mapaBits);
    holder.t1.setText(lista.get(position).getMarca());
    holder.t2.setText(lista.get(position).getModelo());
    holder.t3.setText(lista.get(position).getAño());
    holder.t4.setText(lista.get(position).getPrecio());

    holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            Intent intent= new Intent(contexto,detalleCoche.class);
            intent.putExtra("im",mapaBits);
            intent.putExtra("detallemarca", String.valueOf(lista.get(position).getMarca()));
            intent.putExtra("detallemodelo",String.valueOf(lista.get(position).getModelo()));
            intent.putExtra("detalleano",String.valueOf(lista.get(position).getAño()));
            intent.putExtra("detalleprecio",String.valueOf(lista.get(position).getPrecio()));
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            contexto.startActivity(intent);
        }
    });

[Actividad de detalles]

ImageView vistaImg;
TextView t1,t2,t3,t4;

Bitmap mapaBits;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_detalleCoche);


    vistaImg=findViewById(R.id.imgDetalle);
    t1=findViewById(R.id.nombreCoche);
    t2=findViewById(R.id.modeloCoche);
    t3=findViewById(R.id.añoCoche);
    t4=findViewById(R.id.precioCoche);

    adaptadorLista adaptadorLista;
    Bitmap mapaBits= getIntent().getParcelableExtra("im");
    vistaImg.setImageBitmap(mapaBits);

    t1.setText(getIntent().getStringExtra("detallemarca"));
    t2.setText(getIntent().getStringExtra("detallemodelo"));
    t3.setText(getIntent().getStringExtra("detalleano"));
    t4.setText(getIntent().getStringExtra("detalleprecio"));

introduce el código aquí

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para obtener una sola imagen del array de bitmaps en la vista de reciclaje y mostrarla en la actividad de detalle, primero debes recuperar el bitmap seleccionado del método onBindViewHolder del adaptador y pasarlo a la actividad de detalle utilizando el método Intent.putExtra().

    En la actividad de detalle, recupera el bitmap utilizando el método getIntent().getParcelableExtra() y establece el bitmap en el ImageView utilizando el método setBitmap().

    Aquí tienes el código de ejemplo para la clase del adaptador de la vista de reciclaje:

    public void onBindViewHolder(@NonNull viewholder holder, @SuppressLint("RecyclerView") int position) {
    
        modelo modelo = list.get(position);
    
        byte[] imagen = list.get(position).getImagen();
        Bitmap bitmap = BitmapFactory.decodeByteArray(imagen, 0, imagen.length);
    
        holder.imageView.setImageBitmap(bitmap);
        holder.t1.setText(list.get(position).getMarca());
        holder.t2.setText(list.get(position).getModelo());
        holder.t3.setText(list.get(position).getAño());
        holder.t4.setText(list.get(position).getPrecio());
    
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
    
                Intent intent = new Intent(context, cardetail.class);
                intent.putExtra("im", bitmap);
                intent.putExtra("branddetail", String.valueOf(list.get(position).getMarca()));
                intent.putExtra("modeldetail", String.valueOf(list.get(position).getModelo()));
                intent.putExtra("yeardetail", String.valueOf(list.get(position).getAño()));
                intent.putExtra("pricedetail", String.valueOf(list.get(position).getPrecio()));
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                context.startActivity(intent);
            }
        });
    }
    

    Y aquí está el código para la actividad de detalle:

    ImageView imgview;
    TextView t1, t2, t3, t4;
    
    Bitmap bitmap;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_cardetail);
    
        imgview = findViewById(R.id.imgdetail);
        t1 = findViewById(R.id.cname);
        t2 = findViewById(R.id.cmodel);
        t3 = findViewById(R.id.cyear);
        t4 = findViewById(R.id.cprice);
    
        Intent intent = getIntent();
        bitmap = intent.getParcelableExtra("im");
        imgview.setImageBitmap(bitmap);
    
        t1.setText(intent.getStringExtra("branddetail"));
        t2.setText(intent.getStringExtra("modeldetail"));
        t3.setText(intent.getStringExtra("yeardetail"));
        t4.setText(intent.getStringExtra("pricedetail"));
    }
    

    Asegúrate de agregar los archivos de diseño XML necesarios y los atributos para mostrar la imagen y el texto en la actividad de detalle.

Comments are closed.