2015-04-23 3 views
-1

Извините за мой английский. Я использую адаптер, и я могу ошибаться, используя его. Я пытаюсь показать изображение и textView как вывод. Textview идет правильно на выходе, но изображения нет. Пожалуйста, помогите мне, я пытаюсь много раз исправить это. Загрузить изображение в DownloadImageTask. В DownloadImageTask у меня есть класс ImageLoader, я использовал this tutorial. У меня нет какой-либо ошибки, я ничего не имею (Адаптеры не выводят изображение (android)

ArrayList<News> ArrayListNews; 
int Resourse; 
Context context; 
LayoutInflater vi; 

public NewsAdapter(Context context, int resource, ArrayList<News> objects) { 
    super(context, resource, objects); 

    ArrayListNews = objects; 
    Resourse = resource; 
    this.context = context; 

    vi = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    ViewHolder holder; 
    if(convertView == null) { 
     convertView = vi.inflate(Resourse, null); 
     holder = new ViewHolder(); 

     holder.imageview = (ImageView) convertView.findViewById(R.id.imagenews); 
     holder.nameNews = (TextView) convertView.findViewById(R.id.namenews); 
     holder.dayNews = (TextView) convertView.findViewById(R.id.daynews); 

     convertView.setTag(holder); 
    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 

    new DownloadImageTask(holder.imageview).execute(ArrayListNews.get(position).getImageNews()); 
    holder.nameNews.setText(ArrayListNews.get(position).getNameNews()); 
    holder.dayNews.setText(ArrayListNews.get(position).getDayNews()); 

    return convertView; 
} 

static class ViewHolder { 
    public ImageView imageview; 
    public TextView nameNews; 
    public TextView dayNews; 
} 




//this is class set image 
private class DownloadImageTask extends AsyncTask<String, Void, String> { 
    ImageView bmImage; 

    ImageLoader imgLoader; 

    public DownloadImageTask(ImageView bmImage) { 
     this.bmImage = bmImage; 
    } 

    @Override 
    protected String doInBackground(String... urls) { 
     String urldisplay = urls[0]; 
     return urldisplay; 

    } 

    protected void onPostExecute(String result) { 

     imgLoader = new ImageLoader(context.getApplicationContext()); 
     imgLoader.DisplayImage(result, bmImage); 

    } 
} 
+0

Вам требуется кеширование? Или вы просто хотите загрузить изображения? – Paritosh

+0

@Paritosh Я хочу просто загружать изображения. Я показываю изображение в виде списка – wqedasdqwdasdasdw

ответ

1

Я предлагаю вам использовать Picasso library. Она очень проста в использовании. Просто добавьте зависимость (Android Studio) или добавить файл .jar в библиотеку (в Eclipse).

Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView); 

Вот так. Теперь вам не нужно AsyncTask для загрузки изображений.

Ваш getView() будет

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    ViewHolder holder; 
    if(convertView == null) { 
     convertView = vi.inflate(Resourse, null); 
     holder = new ViewHolder(); 

     holder.imageview = (ImageView) convertView.findViewById(R.id.imagenews); 
     holder.nameNews = (TextView) convertView.findViewById(R.id.namenews); 
     holder.dayNews = (TextView) convertView.findViewById(R.id.daynews); 

     convertView.setTag(holder); 
    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 

    // I am not sure about return value of ArrayListNews.get(position).getImageNews(); 
    // It should be URL pointing to your image file 
    Picasso.with(context).load(ArrayListNews.get(position).getImageNews()).into(holder.imageview); 

    holder.nameNews.setText(ArrayListNews.get(position).getNameNews()); 
    holder.dayNews.setText(ArrayListNews.get(position).getDayNews()); 

    return convertView; 
} 
Смежные вопросы