解决方案 »

  1.   

    你用imageLoader这个三方开源库试试。
      

  2.   

    现在关键是滑动后  重新getview时   图片加载不出来   
      

  3.   

    看一下你imageview控件设的是src还是background。或者试试把bitmap转成drawable,再setbackground试试
      

  4.   

    src,转了drawable也是这样耶   好奇怪
      

  5.   

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
    holder = null;
    if (convertView == null) {
    holder = new ViewHolder();

    convertView = mInflater.inflate(R.layout.class_home_item, null);
    holder = new ViewHolder();
    holder.home_gd_rl = (RelativeLayout) convertView
    .findViewById(R.id.home_gd_rl);
    holder.msg_title_rl = (RelativeLayout) convertView
    .findViewById(R.id.home_item_title_rl);
    holder.userIcon = (ImageView) convertView
    .findViewById(R.id.home_item_user_iv);
    holder.msgTime = (TextView) convertView
    .findViewById(R.id.home_item_time);
    holder.msgTitle = (TextView) convertView
    .findViewById(R.id.home_item_title);
    holder.iv_msg_type = (ImageView) convertView
    .findViewById(R.id.iv_msg_type);
    holder.content_ll = (LinearLayout) convertView
    .findViewById(R.id.home_item_content_rl);
    holder.image_rl = (RelativeLayout) convertView
    .findViewById(R.id.image_rl);
    holder.msgImage = (ImageView) convertView
    .findViewById(R.id.home_item_content_iv);
    holder.msgImage_gridview = (GridView) convertView
    .findViewById(R.id.home_iv_grid);
    holder.msgContent_rl = (RelativeLayout) convertView
    .findViewById(R.id.content_text_rl);
    holder.msgContent = (TextView) convertView
    .findViewById(R.id.home_item_content);
    holder.comment_rl = (RelativeLayout) convertView
    .findViewById(R.id.feed_item_layout_comment);
    holder.praise_rl = (RelativeLayout) convertView
    .findViewById(R.id.feed_item_layout_praise);
    holder.comment_nub = (TextView) convertView
    .findViewById(R.id.comment_nub_tv);
    holder.praise_iv = (ImageView) convertView
    .findViewById(R.id.praise_iv);
    holder.msg_iv_pr = (ProgressBar) convertView
    .findViewById(R.id.progressBar1);
    // 点赞别表
    holder.praise_list_rl = (LinearLayout) convertView
    .findViewById(R.id.praise_list_rl); holder.praise_first = (TextView) convertView
    .findViewById(R.id.tv_praise_first);
    holder.praise_second = (TextView) convertView
    .findViewById(R.id.tv_praise_second);
    holder.praise_third = (TextView) convertView
    .findViewById(R.id.tv_praise_thrid);
    holder.praise_sub1 = (TextView) convertView
    .findViewById(R.id.tv_praise_text_1);
    holder.praise_number = (TextView) convertView
    .findViewById(R.id.tv_praise_text_2);
    holder.praise_sub2 = (TextView) convertView
    .findViewById(R.id.tv_praise_text_3);
    convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag();
    }
    msg = messageList.get(position); // 有图片的动态
    if (msg.getOPImageList().size() == 0) { holder.msgImage.setVisibility(View.GONE); holder.msgImage_gridview.setVisibility(View.GONE);
    holder.home_gd_rl.setVisibility(View.GONE);
    holder.msg_iv_pr.setVisibility(View.GONE);
    holder.image_rl.setVisibility(View.GONE); } else if (msg.getOPImageList().size() == 1) {
    holder.image_rl.setVisibility(View.VISIBLE);
    holder.msgImage_gridview.setVisibility(View.GONE);
    holder.home_gd_rl.setVisibility(View.GONE); Image_url = new StringBuffer(AppConstant.DOWNLOAD_IMAGE_URL)
    .append(msg.getOPImageList().get(0).getImageUrl())
    .toString(); ImageView imageView = holder.msgImage; Bitmap cachedImage = fengle.loadDrawable(context, Image_url,
    new ImageCallback() { @Override
    public void imageLoaded(Bitmap imageDrawable,
    String imageUrl) {
    ImageView imageViewByTag = (ImageView) listview
    .findViewWithTag(imageUrl);
    Log.i("test",
    "Drawable cachedImage = asyncImageLoader.loadDrawable( )-->");
    if (imageViewByTag != null && imageDrawable != null) { // 防止图片url获取不到图片是,占位图片不见了的情况
    imageViewByTag.setImageBitmap(imageDrawable);
    } }
    });
    if (cachedImage == null) {
    holder.msgImage.setImageResource(R.drawable.pic_bg);
    } else {
    holder.msgImage.setImageBitmap(cachedImage);
    }
    } else {
    // 多张图片 holder.image_rl.setVisibility(View.GONE);
    holder.home_gd_rl.setVisibility(View.VISIBLE);
    holder.home_gd_rl.setFocusable(false);

    holder.msgImage.setVisibility(View.GONE);
    holder.msgImage_gridview.setVisibility(View.VISIBLE);
    holder.msg_iv_pr.setVisibility(View.GONE);
    holder.msgImage_gridview.setFocusable(false);
    }
    if (isCanClick.get(position) == false) {
    holder.praise_iv.setImageDrawable(context.getResources()
    .getDrawable(R.drawable.dashboard_recommand_off_default));
    } else {
    holder.praise_iv.setImageDrawable(context.getResources()
    .getDrawable(R.drawable.dashboard_recommand_on_default));
    } holder.comment_rl.setOnClickListener(new OnClickListener() { @Override
    public void onClick(View v) {
    Log.e("", "////////////////////");

    }
    }); holder.praise_rl.setOnClickListener(new OnClickListener() { @Override
    public void onClick(View v) {
    current_position = position;
    praiseSubmit();
    }
    }); holder.msgTitle.setText(msg.getUserName());
    StringBuffer str = new StringBuffer(msg.getActivityDate());
    String create_time = str.append(" " + msg.getActivityTime()).toString();
    holder.msgTime.setText(create_time);
    holder.msgContent.setText(msg.getUserActivityString());
    initPraiseView();
    if (msg.getOPCommentsList().size() == 0) {
    holder.comment_nub.setText("");
    } else {
    holder.comment_nub.setText(String.valueOf(msg.getOPCommentsList()
    .size()));
    }
    holder.content_ll.setOnClickListener(new OnClickListener() { @Override
    public void onClick(View v) {
    }
    });
    return convertView;
    }
      

  6.   

    holder = new ViewHolder();
    这一步有重复了,但不是这个的问题 
    删代码的时候忘删了
      

  7.   

    你试试AsyncImage这个第三方开源库
      

  8.   


    我决定不是异步加载图片的问题, 我debug了一下     不管用到什么方式    回调还是AsyncTask,都会进到最后setimagebitamp这一步可是图片就是加载不出来一般在文件中的图片读取也还是挺快的呀第一次是能加载的    滑动后就怎么都加载不出来本人很菜  也不知道哪里出了问题
      

  9.   

      ImageView imageViewByTag = (ImageView) listview 
                                    .findViewWithTag(imageUrl); 问题应该在这一句 你这个搜索 只会找到第一个TAG 是imageUrl的控件。 可能并不是你的要更新的控件。比如  你setTAG了  , listView 会重用item的,   在 msg.getOPImageList().size()=0 时候 还是有这个tag。  
    然后你find的结果就是这个contentView里面的,不是你要更新的那个ImageView。 
      

  10.   

    这个代码中  在 ImageCallBack 接口中 吧imageUrl 回传回来,跟imageView.getTag() 进行比较,应该可以解决问题。试试看。
      

  11.   

    找到错误的原因了      在这个else  if (msg.getOPImageList().size() == 1) {
            holder.image_rl.setVisibility(View.VISIBLE);
            holder.msgImage_gridview.setVisibility(View.GONE);
            holder.home_gd_rl.setVisibility(View.GONE);里加上 image.setvisibility(view.visible)就行了  
     
      

  12.   

    感谢各位大神的建议和指导哈 目前问题已经解决了
    差了一个imageview 的显示(好坑啊)
    谢谢各位了