我有一个列表视图,显示来自互联网的图像和文本。 我的意图是,除了显示图像视图之外,该图像是listview行的背景图像。 这有效,但有问题。
在我用于imageview的listview适配器中:
imageLoader.DisplayImage (song.get (principal.KEY_PICTURE) my_imageView);
并使用LinearLayout中的图像:
imageLoader.DisplayImageLinear (song.get (principal.KEY_PICTURE) my_linearLayout);
这会调用以下方法:
public void DisplayImageLinear (String url, LinearLayout linearbck)
{
Bitmap bitmap = memoryCache.get (url);
Drawable d = new BitmapDrawable (bitmap);
if (bitmap! = null) {
linearbck (d);
}
else
{ linearbck.setBackgroundResource (R.drawable.list_selector); }
}
我的问题是列表视图行的背景图像只有在列表视图滑出屏幕并重新输入时才可见...
我希望我正确解释..这里有一张解释问题的图片
我尝试使用linearbck.invalidate(),但没有成功
我真诚地感谢任何帮助
感谢
祝你好运
编辑:
添加适配器。谢谢:))
public class lstAdapter extends BaseAdapter {
private Activity activity;
private ArrayList<HashMap<String, String>> data;
private static LayoutInflater inflater=null;
public ImageLoader imageLoader;
public MinAdapter(Activity a, ArrayList<HashMap<String, String>> d) {
activity = a;
data=d;
inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
imageLoader=new ImageLoader(activity.getApplicationContext());
}
public int getCount() {
return data.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
if(convertView==null)
vi = inflater.inflate(R.layout.list_row, null);
ImageView thumb_image=(ImageView)vi.findViewById(R.id.list_image);
ImageView photo_user =(ImageView)vi.findViewById(R.id.photoUser);
LinearLayout background =(LinearLayout)vi.findViewById(R.id.background);
HashMap<String, String> song = new HashMap<String, String>();
song = data.get(position);
imageLoader.DisplayImage(song.get(principal.KEY_AVATAR_AUTOR_ENTRADA), thumb_image);
imageLoader.DisplayImage(song.get(principal.KEY_PICTURE), photo_user);
imageLoader.DisplayImageLinear(song.get(principal.KEY_PICTURE), background);
return vi;
}
@Override
public boolean isEnabled(int position)
{
if(principal.asynTaskEnUso.equals("yes")){
return false;
} else {
return true;
}
}
}
答案 0 :(得分:0)
当我们看到source of ImageLoader
时,如果在缓存中没有下载照片,则会对照片进行排队。
=&GT;你没有排队照片。
从回调中下载照片时,它是set to the ImageView。
=&gt;您可能(或者很可能)不将其设置为LinearLayout
作为背景。
现在你的问题:
我的问题是listview行的背景图片 只有当列表视图滑出屏幕时才会显示 重新进入......
第一次,缓存是空的,它没有找到所需的照片,所以它去下载,因为你没有实现并排队等待LinearLayout
在回调中设置为背景。它没有显示,但是当您滚动ListView
并返回时,它会第一次找到该图像(因为它已下载并缓存)并将其设置为背景。
解决方案:
维护并设置一些标记以跟踪您的LinearLayout
参考,并在下载完成时将其设置为背景。