列表视图向上滚动时图像重叠?

时间:2019-05-22 06:50:04

标签: java android image listview

以上对我的问题不满意的答案。我的垂直列表视图包含URL图像。如果未从url收到图像,则显示占位符图像。但是我向上滚动列表视图,图像在占位符图像中重叠。请帮助我解决这个问题。

if (view == null) {
    LayoutInflater vi = LayoutInflater.from(context);
    view = vi.inflate(R.layout.my_own, parent, false);
    viewHolder = new ViewHolder(view);
    view.setTag(viewHolder);
} else {
    viewHolder = (ViewHolder) view.getTag();
}
if (filepath != null && !filepath.isEmpty()) {
    final String fileUrl = filepath.get(0);
    Log.d("image", "image" + data);
    if (fileUrl.contains(".jpg") || fileUrl.contains(".png")) { 
        Glide.with(context).asBitmap().load(fileUrl).into(new SimpleTarget < Bitmap > () {
            @Override public void onResourceReady(Bitmap resource, Transition < ? super Bitmap > transition) {
                viewHolder.report_image.setImageBitmap(resource);
                viewHolder.report_image.setScaleType(ImageView.ScaleType.CENTER_CROP);
                FM_ReportFileSystem.saveImageToSdCard(resource, fileUrl);
            }
        });
    }
}

XML:

<de.hdodenhof.circleimageview.CircleImageView android:id="@+id/report_image" 
android:layout_width="85dp" 
android:layout_height="85dp" 
android:layout_marginLeft="@dimen/_8sdp" 
android:layout_marginRight="@dimen/_10sdp" 
android:layout_marginTop="@dimen/_7sdp" 
android:src="@drawable/no_image" 
app:civ_border_color="@color/LightGray" app:civ_border_width="1dp" /> 

3 个答案:

答案 0 :(得分:0)

对以下内容有任何想法吗?似乎需要始终获取当前索引而不是0。 最终的字符串fileUrl = filepath.get(0);

还尝试其他部分来加载图像。

if (fileUrl.contains(".jpg") || fileUrl.contains(".png")) { 
        Glide.with(context).asBitmap().load(fileUrl).into(new SimpleTarget < Bitmap > () {
            @Override public void onResourceReady(Bitmap resource, Transition < ? super Bitmap > transition) {
                viewHolder.report_image.setImageBitmap(resource);
                viewHolder.report_image.setScaleType(ImageView.ScaleType.CENTER_CROP);
                FM_ReportFileSystem.saveImageToSdCard(resource, fileUrl);
            }
        });
    }else{
//TODO:
viewHolder.report_image.setImageBitmap("Placeholder image");

}

答案 1 :(得分:0)

尝试使用Glide的内置占位符功能,并删除布局对图像的引用。

在您的xml中,尝试更改

android:src="@drawable/no_image" 

tools:src="@drawable/no_image"

这仅允许出于开发/设计目的而在布局编辑器中查看图像。为此,您可能需要在父视图中导入工具包,

xmlns:tools="http://schemas.android.com/tools 

然后使用Glide的占位符功能自动将占位符图像插入没有其他可用图像的位置。

Glide.with(context)
.asBitmap()
.load(fileUrl)
.placeholder(R.drawable.no image)
//...the rest of your code here

答案 2 :(得分:0)

final ViewHolder viewHolder;
 if (view == null) {
    LayoutInflater vi = LayoutInflater.from(context);
            view = vi.inflate(R.layout.my_own, parent, false);
            viewHolder = new ViewHolder(view);
            view.setTag(viewHolder);        
    } else {
       viewHolder = (ViewHolder) view.getTag();
    }
  viewHolder.report_image.setImageDrawable(null);



if (filepath != null && !filepath.isEmpty()) {

            final String fileUrl = filepath.get(0);
            //Log.d("image", "image" +data);

            if (fileUrl.contains(".jpg") || fileUrl.contains(".png")) {


                if (fileUrl != null) { // simulate an optional url from the data item
                Glide.with(context)
                        .asBitmap()
                        .load(fileUrl)
                        .into(new SimpleTarget<Bitmap>() {
                            @Override
                            public void onResourceReady(Bitmap resource, Transition<? super Bitmap> transition) {
                                if (resource == null) {
                                    // holder.setIsRecyclable(true);
                                 //  return;
                                }

                                viewHolder.report_image.setImageBitmap(resource);
                              //  viewHolder.report_image.setScaleType(ImageView.ScaleType.CENTER_CROP);
                                FM_ReportFileSystem.saveImageToSdCard(resource, fileUrl);
                            }
                        });
                }
            }
           }else
        {
            Bitmap icon = BitmapFactory.decodeResource(context.getResources(),
                    R.drawable.no_image);
            viewHolder.report_image.setImageBitmap(icon);
        }