Я не могу отобразить загруженные изображения в моем приложении - PullRequest
0 голосов
/ 24 февраля 2020

в методе состояния обновления:

public void updateStatus() {

    Random random = new Random();
    URLSize = celebURLs.size();

    if (URLSize <= 0) {
        URLSize++;
        //chosenImage = random.nextInt(URLSize);
    } else {
        chosenImage = random.nextInt(URLSize);
    }

    ImageDownloader imageDownloader = new ImageDownloader();
    Bitmap celebPics;

    try {
        celebPics = imageDownloader.execute(celebURLs.get(chosenImage)).get();
        imageView.setImageBitmap(celebPics);

        locationOfCorrectAnswer = random.nextInt(4);
        int incorrectAnswer;
        for (int i = 0; i < 4; i++) {
            if (i == locationOfCorrectAnswer) {
                answers[i] = chosenNames.get(chosenImage);
            } else {
                incorrectAnswer = random.nextInt(celebURLs.size());
                while (incorrectAnswer == chosenImage) {
                    incorrectAnswer = random.nextInt(celebURLs.size());
                }
                answers[i] = chosenNames.get(incorrectAnswer);
            }

        }
        button1.setText(String.format("%s", answers[0]));
        button2.setText(String.format("%s", answers[1]));
        button3.setText(String.format("%s", answers[2]));
        button4.setText(String.format("%s", answers[3]));

    } catch (Exception e) {
        e.printStackTrace();
    }

}

Я изменил код, потому что он вызвал исключение «IllegealArgumentException n должно быть положительным», но даже после изменения кода всегда увеличивать размер случайных генерируемых значений из списка массивов, он все еще не будет работать

1 Ответ

0 голосов
/ 24 февраля 2020

Таким образом, экземпляр asynctask выводит строку данных, а затем вы помещаете ее в качестве растрового изображения и хотите, чтобы она была установлена ​​в качестве источника Imageview? Это было бы неправильно.

Сначала поместите данные в байтовый массив (это будет вывод класса asynctask). Затем превратите его в растровое изображение:

Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
ImageView image = (ImageView) findViewById(R.id.imageView1);
image.setImageBitmap(Bitmap.createScaledBitmap(bmp, image.getWidth(),
                image.getHeight(), false));
...