Изображения с URL не отображаются в ImageView, я перепробовал все, что смог найти - PullRequest
2 голосов
/ 24 декабря 2011

У меня есть строка [] с десятью источниками URL-адресов изображений, и я пытаюсь заставить ImageView их показывать. Я должен показать каждое изображение с соответствующим текстом рядом с ним, и хотя тексты показывают, что изображения просто не будут работать. Я пробовал все решения, которые мог найти, но ничего не получается. Я был бы очень признателен за некоторые рекомендации.

Это решение, которое я пытаюсь сделать:

Метод, который я вызываю из класса, расширяющего ListActivity. (заголовки и imageurls - String [], imageurls содержит источники URL-адресов изображений, а заголовки содержат текст, который будет отображаться рядом с изображениями)

setListAdapter(new MyPerformanceArrayAdapter(this, titles, imageurls));

И вот код, который у меня есть для MyPerformanceArrayAdapter:

public class MyPerformanceArrayAdapter extends ArrayAdapter<String> {
    private final Activity context;
    private final String[] names;
    private final String[] images;

    public MyPerformanceArrayAdapter(Activity context, String[] names, String[] images) {
        super(context, R.layout.rowlayout, names);
        this.context = context;
        this.names = names;
        this.images = images;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = context.getLayoutInflater();
        View rowView = inflater.inflate(R.layout.rowlayout, null, true);
        TextView textView = (TextView) rowView.findViewById(R.id.label);
        ImageView imageView = (ImageView) rowView.findViewById(R.id.icon);

        String s = names[position];
        textView.setText(s);


        Drawable drawable = LoadImageFromWebOperations(images[position]);
        imageView.setImageDrawable(drawable);

        return rowView;
    }

    private Drawable LoadImageFromWebOperations(String url) {
        try {
            InputStream is = (InputStream) new URL(url).getContent();
            Drawable d = Drawable.createFromStream(is, "src name");
            return d;
        } catch (Exception e) {
            System.out.println("Exc="+e);
            return null;
        }
    }
}

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

Ответы [ 2 ]

1 голос
/ 25 декабря 2011

Для этого я всегда использую Bitmaps вместо drawables, и пока он работал отлично.

1 голос
/ 25 декабря 2011

Если вы используете путь из sdcard, будет работать приведенный ниже код, иначе, если вы используете изображения из папки drwableres, создайте статический массив растровых изображений, как вы сделали для массива String

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater inflater = context.getLayoutInflater();
    View rowView = inflater.inflate(R.layout.rowlayout, null, true);
    TextView textView = (TextView) rowView.findViewById(R.id.label);
    ImageView imageView = (ImageView) rowView.findViewById(R.id.icon);

    String s = names[position];
    textView.setText(s);

// изменения сделаны здесь

    Bitmap bmp = LoadImageFromWebOperations(images[position]);
    imageView.setImageBitmap(bmp);

    return rowView;
}

//

private Drawable LoadImageFromWebOperations(String url) {
    try {
     // use bitmap instead of drawable
       Bitmap bmp=BitmapFactory.decodeStream(getContentResolver().openInputStream(capturedImage));

        return bmp;
    } catch (Exception e) {
        System.out.println("Exc="+e);
        return null;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...