Estoy trabajando en un nuevo programa Java de Android que trae dos variables (String title y String imageUrl) y luego agrega botones llamados String (title).

Cuando el usuario hace clic en un botón, la aplicación debe cargar la imagen de la url en String (imageUrl).

¡El problema que enfrento es que ninguno de los métodos de carga de imágenes funcionó conmigo!

¡Aunque mi proyecto no tiene ningún error!

Este es mi código:

public void start(String res) {
    try {
        JSONArray jarray = new JSONArray(jsonString);
        for (int k = 0; k < jarray.length(); k++) {
            JSONObject obj = jarray.getJSONObject(k);
            Button btn = new Button(this);
            btn.setText(obj.getString("title"));
            final String link = obj.getString("link"); 
            btn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    openImage(link);
                }
            });
            space.addView(btn);
            dialog.dismiss();
        }
    } catch(Exception e) {
    }
}
public void openImage(final String urk) {
    dialog = ProgressDialog.show(this, "", "loading...", true);
    new Thread(new Runnable() {
        public void run() {
            nextstepload(urk);
        }
    });
}
public void nextstepload(final String urk) {
    try {
        ImageView im = findViewById(R.id.img);
        URL url = new URL(urk);
        Bitmap image = BitmapFactory.decodeStream(url.openConnection().getInputStream()); 
        im.setImageBitmap(image); 
        dialog.dismiss(); 
    } catch(IOException e) {
        System.out.println(e);
    }
}

Y mi formulario Xml es:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:id="@+id/displayer">
        <ImageView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/img"/>
    </LinearLayout>
</LinearLayout>

Aviso: ¡Leí los escritos anteriores sobre este tema en StackOverFlow pero ninguno de ellos me ayuda lo suficiente! Es posible que necesite un código adecuado para mi proyecto especialmente.

Muchas gracias

0
Karam Abdullah 18 abr. 2020 a las 23:22

2 respuestas

Pruébalo para planear. https://github.com/bumptech/glide

Puedes cargar imágenes como esta:

Glide
    .with(context)
    .load(YOUR URL HERE - AS STRING)
    .placeholder(R.drawable.loading_spinner) // if you want some placeholder, it comes here
    .into(myImageView); // The imageview reference.
1
Filipe Oliveira 19 abr. 2020 a las 00:37

Simplemente olvidaste Thread.start()

new Thread(new Runnable() {
    public void run() {
        nextstepload(urk);
    }
}).start();

Un objeto Thread en sí mismo no hace nada. Debe .start() después de crear una instancia.

0
hata 19 abr. 2020 a las 05:31