【问题标题】:Android GridView : images shuffled/mixed up on scrollAndroid GridView:图像在滚动时被打乱/混合
【发布时间】:2014-03-31 09:50:00
【问题描述】:

当我滚动时,我的 GridView 的一些图像混淆了。我不明白为什么...

这是我的代码:

public View getView(int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub      

    Item curItem = items.get(position);

ViewHolder holder;

if (convertView == null){  // if it's not recycled, initialize some attributes

    convertView =  mInflater.inflate(R.layout.grid_cell, null);
    holder = new ViewHolder();
    holder.squareImageView = (SquareImageView)convertView.findViewById(R.id.item_image);
    convertView.setTag(holder);

    holder.itemNameTextView = (TextView)convertView.findViewById(R.id.itemNameTextView);

    holder.deleteImageView = (SquareImageView)convertView.findViewById(R.id.deleteImageView);

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


if(!curItem.loadingLaunched ) 
{
    curItem.loadingLaunched = true;
    curItem.loadImage();
}

if(curItem.bm != null)
{
    holder.squareImageView.setImageBitmap(curItem.bm);

}


if(curItem.title != null)
{
    holder.itemNameTextView.setText(curItem.title);
}       

return convertView;

    }


static class ViewHolder {           
        SquareImageView squareImageView;
        TextView itemNameTextView;              
        SquareImageView deleteImageView ;       
    }

有人知道如何解决这个问题吗?

谢谢!!

【问题讨论】:

    标签: java android listview gridview android-listview


    【解决方案1】:

    好的,找到问题了!

    在我的 Item 类中,我在 loadImage 方法中添加了类似的内容:

    bm=null;   // Bad idea to init this BitMap to null !!!!!!
    
    
     try {       
            UrlImage = new URL (file);
            HttpURLConnection connection;
            connection = (HttpURLConnection) UrlImage.openConnection(); 
            bm= BitmapFactory.decodeStream(connection.getInputStream());
         }
        catch{...}
    

    这是一个非常糟糕的主意,因为只要远程图像未加载,curItem.bm 就会保持为空。而且 gridView 不喜欢加载空图像(它混合了所有内容)。

    所以,在项目类的构造函数中(警告:将它放在构造函数中真的很重要,奇怪的是,如果只放置而不是“bm = null”则不起作用),我放了这个:

     bm = BitmapFactory.decodeResource(MyApp.appContext.getResources(), R.drawable.default_image);
    

    不要再混了!

    【讨论】:

      猜你喜欢
      • 2013-04-24
      • 1970-01-01
      • 2012-06-15
      • 1970-01-01
      • 1970-01-01
      • 2010-12-22
      • 1970-01-01
      • 2016-05-19
      • 1970-01-01
      相关资源
      最近更新 更多