适配器不输出图像(android)
Adapters not output image(android)
对不起我的英语。我正在使用适配器,使用它时可能会出错。我正在尝试将图像和文本视图显示为输出。 Textview 在输出中正确出现,但图像不是。请帮助我,我尝试了很多次来修复它。在 DownloadImageTask
中加载图像。在DownloadImageTask
中我有classImageLoader
,我用过this tutorial。我没有任何错误,我什么都没有(
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);
}
}
我建议您使用 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;
}
对不起我的英语。我正在使用适配器,使用它时可能会出错。我正在尝试将图像和文本视图显示为输出。 Textview 在输出中正确出现,但图像不是。请帮助我,我尝试了很多次来修复它。在 DownloadImageTask
中加载图像。在DownloadImageTask
中我有classImageLoader
,我用过this tutorial。我没有任何错误,我什么都没有(
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);
}
}
我建议您使用 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;
}