gpt4 book ai didi

java - Android - 具有一种布局、多个 setVisibility 的 RecyclerView

转载 作者:太空狗 更新时间:2023-10-29 16:13:37 26 4
gpt4 key购买 nike

我有一个基本上是多合一的布局,其中包含我的应用的主要提要所需的一切。所有可变项(图像、视频缩略图等)首先设置为 GONE,并在需要时设置为 VISIBLE

问题是有时,可能是由于 RecyclerView 的回收行为,应该是 GONE 的项目在 VISIBLE错误的地方。

示例:

Item no 1 contains Text

Item no 2 contains Image

Item no 3 contains Image

我一直向下滚动到第 x 项,然后向上滚动,这就是我得到的:

Item no 1 contains Image from item no x, sometimes item no 3

Item no 2 contains Image

Item no 3 contains Image

我正在使用自定义 ViewHolder,它扩展了 RecyclerView.ViewHolderCustomViewHolder 的目的是用于布局声明和初始化。

    ProgressBar progressBar;
View viewDimmer;
RelativeLayout postListWrapper;

...

public ObjectViewHolder(View v) {
super(v);
progressBar = (ProgressBar)v.findViewById(R.id.post_inscroll_progressBar);
viewDimmer = (View)v.findViewById(R.id.post_inscroll_viewDimmer);
postListWrapper = (RelativeLayout)v.findViewById(R.id.post_inscroll_postListWrapper);
}

我如何加载图像的示例:

Picasso.with(context)
.load(youtubeThumbnailUrl)
.fit()
.centerCrop()
.into(
((ObjectViewHolder) holder).userPostYoutubeImage
);

如果没有从服务器获取 url,我已将每个可见性设置为 GONE

((ObjectViewHolder) holder).userPostImageWrapper.setVisibility(View.GONE);
((ObjectViewHolder) holder).userPostYoutubeImageWrapper.setVisibility(View.GONE);

但不知何故,图像仍然在以前的项目上重复使用(是的,不仅是项目 1)。有时图像也在错误的 ImageView 中。图片 D 应该在 ImageView D 中,但它在 ImageView A 中。

是否有关于设置 RecyclerView 并正常运行的指南?

如果我遗漏了什么,或者需要提供更多代码,请务必通知我 :D

最佳答案

您还需要添加 else 条件。就像下面的例子。

// if no url is found from server
if(url == null){
((ObjectViewHolder) holder).userPostImageWrapper.setVisibility(View.GONE);
((ObjectViewHolder) holder).userPostYoutubeImageWrapper.setVisibility(View.GONE);

} else {
// Some url has found
((ObjectViewHolder) holder).userPostImageWrapper.setVisibility(View.VISIBLE);
((ObjectViewHolder) holder).userPostYoutubeImageWrapper.setVisibility(View.VISIBLE);
}

如果您要在运行时设置它们的可见性,请对您作为列表项到达那里的每个项目执行此操作。

关于java - Android - 具有一种布局、多个 setVisibility 的 RecyclerView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36327049/

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