【问题标题】:Android - Implementation of Lazy loading of images with onScrollListener in a ListViewAndroid - 在 ListView 中使用 onScrollListener 实现图像延迟加载
【发布时间】:2013-02-13 06:55:36
【问题描述】:

我已经使用 onScrollListener 实现了延迟加载。我遇到的一个问题是第一次活动开始时图像不显示。滚动列表视图时会显示图像。图像第一次未加载的任何原因。请告诉我。谢谢。

getView()代码如下:

public View getView(int position, View convertView, ViewGroup parent) {
        View vi=convertView;
        ContentListHolder contentHolder = null;
        if(convertView==null)
        {
            vi = inflater.inflate(layoutItem, null);

            contentHolder = new ContentListHolder();
            contentHolder.textview = (TextView)vi.findViewById(idText);
            contentHolder.imageView =(ImageView)vi.findViewById(idImage);

            vi.setTag(contentHolder);
        }
        else
        {
            contentHolder = (ContentListHolder) convertView.getTag();
        }        
        contentHolder.textview.setText("item "+position);
        contentHolder.imageView.setImageResource(layoutstub);
        Bitmap bitmap = imageLoader.getBitmapFromCache(data[position]);
        notifyDataSetChanged(); 
        if(bitmap != null)
        {           contentHolder.imageView.setImageBitmap(bitmap);
        }       
        return vi;
    }

【问题讨论】:

  • 只需发布您的适配器代码,我的意思是 getView() 代码。
  • 你不应该在 getView() 中使用 notifyDataSetChanged() 方法
  • 我删除了 notifyDataSetChanged(),但仍然有同样的问题。
  • notifyDataSetChanged() in getView 根本没有任何意义......你想用它实现什么?

标签: android android-listview lazy-loading


【解决方案1】:

这只是因为你没有为你的 ImageView 设置标签。

试试:

contentHolder.imageView.setTag(bitmap);

【讨论】:

  • 我在 getView() 方法中尝试了这段代码,但它不起作用。
  • @user1182217 告诉我你为什么要从缓存中获取位图?你不能用 URL 代替吗?
  • 请检查此行...Bitmap bitmap = imageLoader.getBitmapFromCache(data[position]);。这里的数据代表实际的 URL。
  • @user1182217 顺便说一句,getBitmapFromCache() 逻辑中有什么?
  • 此方法将从缓存中返回位图,这是一个地图。 private Map<String, Bitmap> cache=Collections.synchronizedMap( new LinkedHashMap<String, Bitmap>(10,1.5f,true));get方法如下:public Bitmap get(String id){ try{ if(!cache.containsKey(id)) return null; return cache.get(id); }catch(NullPointerException ex){ return null; } }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-27
  • 2010-10-07
  • 1970-01-01
  • 2010-11-27
  • 2011-02-24
相关资源
最近更新 更多