Как загрузить изображение с URL на Java Android? Нет ошибки в коде, но это не работает - PullRequest
0 голосов
/ 18 апреля 2020

Я работаю над новой программой Android Java, которая возвращает две переменные (String title и String imageUrl), а затем добавляет кнопки с именами String (title).

Когда пользователь нажимает на кнопка, которую приложение должно загрузить изображение с URL в String (imageUrl).

Проблема, с которой я сталкиваюсь, заключается в том, что ни один из методов загрузки изображений не работал со мной !!

Хотя мой проект не имеет ошибок вообще !!

Это мой код:

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);
    }
}

И моя Xml форма :

<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>

Примечание: Я читал предыдущие статьи на эту тему на StackOverFlow, но ни одна из них не помогает мне достаточно! Мне может понадобиться код, подходящий для моего проекта особенно.

Большое спасибо

Ответы [ 2 ]

2 голосов
/ 19 апреля 2020

Попробуй скользить. https://github.com/bumptech/glide

Вы можете загружать изображения следующим образом:

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.
0 голосов
/ 19 апреля 2020

Вы просто забыли Thread.start()

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

A Thread сам объект ничего не делает. Вы должны .start() это после создания экземпляра.

...