我自己定义了个baseadapter,然后放在gridview中,现在问题是gridview第一次显示的时候画面上一片黑,然后我往下滑动,然后滑上来的话就显示一部分图片,怎么解决呢,一出来就显示?我的adapter中getview如下
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if(convertView == null) {
holder = new ViewHolder();
convertView = LayoutInflater.from(c).inflate(R.layout.photo_layout, null);
holder.ivPhoto = (ImageView) convertView.findViewById(R.id.imageView_photo_item);

convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.ivPhoto.setImageBitmap(getBitmap(uris[position], holder.ivPhoto));

return convertView;
}

解决方案 »

  1.   

    难道是android加载图的机制有问题?
      

  2.   

    holder.ivPhoto.setImageBitmap(getBitmap(uris[position], holder.ivPhoto));
    怀疑是这个位置没取到数据
    你可以在这个位置加个log看传进去的holder.ivPhoto的值多少
    什么时候能取到数据什么时候取不到数据。感觉convertView == null的时候,得到的holder.ivPhoto传入你的取图片函数是没取到数据。
      

  3.   

    你的意思是把holder.ivPhoto.setImageBitmap(getBitmap(uris[position], holder.ivPhoto));
    放在if(convertView == null) {
     holder = new ViewHolder();
     convertView = LayoutInflater.from(c).inflate(R.layout.photo_layout, null);
     holder.ivPhoto = (ImageView) convertView.findViewById(R.id.imageView_photo_item);
    这个的下一行吗?
      

  4.   

    不是,只是叫你加log将holder.ivPhoto数据信息打出来看看。
    看看是不是在某些情况下,getBitmap得不带图片
      

  5.   

    加载图片改成holder.ivPhoto.setImageResource();
      

  6.   

    刚才这个问题解决了,是我getbitmap时有问题,现在又有个新问题
    现在又遇到了大图显示的问题,还没什么思路
    我想像系统那样的浏览
    要考虑内存溢出问题,也要平滑的滑动,一次加载几个图片呢?
      

  7.   

    这个你用的是什么控件啊,不是gridview吧。
    用gallery试试。
    别忘了控制内存。PS:gallery没用过,只是知道原理,没详细玩过