gpt4 book ai didi

java - 我在 Recycler View StaggeredGridLayout 中使用 Glide 获得不同大小的图像

转载 作者:行者123 更新时间:2023-11-29 00:03:47 25 4
gpt4 key购买 nike

我需要从网络下载图片,为此我使用了 Glide

下载图像后,它们出现在 Recycler Veiw 中。部分图像看起来不错,并且像这样填充所有单元格

enter image description here

但是有些图像在其他方面表现出奇怪的行为,看起来像这样

enter image description here

据我所知,这样的结果是由于 Glade 异步工作,并且在适配器 Glade 中创建的单元格没有图像并且适配器为单元格创建默认大小的那一刻之前......只有在一段时间后,glade 才出现图像,但单元格已经创建了错误的大小。

但是如何解决呢?

我需要适配器等到 glade 完成下载,然后再为 Recycler View 创建单元格

我的 XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="4dp"
android:paddingEnd="8dp"
android:paddingStart="8dp"
android:paddingTop="4dp"
>

<android.support.v7.widget.CardView
android:id="@+id/cvInbox"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:cardCornerRadius="5dp"
app:cardElevation="15dp"
>

<com.balysv.materialripple.MaterialRippleLayout
android:id="@+id/rippleInbox"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/standard_white"
app:mrl_rippleColor="@color/ntz_background_light_grey"
app:mrl_rippleOverlay="true"
>

<LinearLayout
android:id="@+id/cardMainActivityLinearLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>

<ImageView
android:id="@+id/imageViewMainCard"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="2"
android:background="@color/standard_white"
android:orientation="vertical"
android:layout_below="@+id/imageViewMainCard"
>

<TextView
android:id="@+id/tvBrandName"
android:text="custom brand"
android:textColor="@color/black_color"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
/>

<TextView
android:id="@+id/tvItemName"
android:text="custom Type"
android:textColor="@color/black_color"
android:layout_below="@+id/tvBrandName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>

<TextView
android:id="@+id/tvPrice"
android:text="custom price"
android:textColor="@color/black_color"
android:layout_below="@+id/tvItemName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>

<Button
android:id="@+id/bAction"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="button"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"

/>

</RelativeLayout>
</LinearLayout>
</com.balysv.materialripple.MaterialRippleLayout>
</android.support.v7.widget.CardView>
</LinearLayout>

滑入适配器

ImageView iv = currentView.ivMainCard;
String url = currentCard.getImageUrl();

Glide.with(context)
.load(url)
.placeholder(R.drawable.progress_animation)
.crossFade()
.into(iv);

最佳答案

在您的回收器 View 的 bindViewHolder 中,您需要使用所有零参数添加到 imageView 布局(0,0,0,0)。在您的情况下,代码如下

        ImageView iv = currentView.ivMainCard;
iv.layout(0,0,0,0);

String url = currentCard.getImageUrl();

Glide.with(context)
.load(url)
.placeholder(R.drawable.progress_animation)
.crossFade()
.into(iv);

关于java - 我在 Recycler View StaggeredGridLayout 中使用 Glide 获得不同大小的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42226999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com