以上对我的问题不满意的答案。我的垂直列表视图包含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" />
答案 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);
}