我正在使用智能图像视图从互联网下载图像。 我将图像放在列表视图中并且工作正常,问题在我滚动时开始,应用程序查看以前的图像,一段时间后它显示正确的图像,我希望它不会显示任何东西,直到正确的图像准备好了,我该怎么做?
import java.util.ArrayList; import android.app.Activity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; import com.loopj.android.image.SmartImageView; public class ListAdapter extends BaseAdapter{ Activity context; ArrayList<Row> List ; public ListAdapter(ArrayList<Row> List, Activity context) { this.List = List; this.context = context; } @Override public int getCount() { return List.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; LayoutInflater inflater = context.getLayoutInflater(); if (convertView == null){ convertView = inflater.inflate(R.layout.custom_row, parent, false); holder = new ViewHolder(); holder.image = (SmartImageView) convertView.findViewById(R.id.image); holder.name = (TextView) convertView.findViewById(R.id.name); convertView.setTag(holder); } else{ holder = (ViewHolder)convertView.getTag(); } String Name = List.get(position).getName(); String image = List.get(position).getURL(); holder.name.setText(Name); holder.image.setImageUrl(image); return convertView; } static class ViewHolder { TextView name; SmartImageView image; } }i'm downloading images from internet using smart image view. i placed the images inside a listview and it works fine, the problem start when i'm scrolling, the app viewing the previous images and after a while it shows the correct image, i want that it won't display anything until the correct image is ready, how can i do that?
import java.util.ArrayList; import android.app.Activity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; import com.loopj.android.image.SmartImageView; public class ListAdapter extends BaseAdapter{ Activity context; ArrayList<Row> List ; public ListAdapter(ArrayList<Row> List, Activity context) { this.List = List; this.context = context; } @Override public int getCount() { return List.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; LayoutInflater inflater = context.getLayoutInflater(); if (convertView == null){ convertView = inflater.inflate(R.layout.custom_row, parent, false); holder = new ViewHolder(); holder.image = (SmartImageView) convertView.findViewById(R.id.image); holder.name = (TextView) convertView.findViewById(R.id.name); convertView.setTag(holder); } else{ holder = (ViewHolder)convertView.getTag(); } String Name = List.get(position).getName(); String image = List.get(position).getURL(); holder.name.setText(Name); holder.image.setImageUrl(image); return convertView; } static class ViewHolder { TextView name; SmartImageView image; } }最满意答案
这是因为Android中的列表视图可以重复使用以帮助提高性能。 SmartImageView的setImageUrl方法需要一些时间才能完成,将其保留为上一个图像,直到完成
您可以通过在holder.image.setImageUrl(image);添加以下行来解决此问题holder.image.setImageUrl(image);
holder.image.setImageBitmap(null);This is because the listviews in Android are reused to help performance. The SmartImageView's setImageUrl method takes some time to complete, leaving it with the previous image until it finishes
You can fix this by adding the following line above holder.image.setImageUrl(image);
holder.image.setImageBitmap(null);更多推荐
发布评论