我有一个基本的全能布局,其中包含了我的应用程序主要的信息流所需的所有内容。所有可变项(图像、视频缩略图等)最初都被设置为
问题是有时候,可能是由于
例如:
块引用:
块引用:
如果从服务器获取不到URL,我会将每个可见性设置为
但是不知怎么的,这个图片仍然被用在了之前的项目上(不仅仅是第一个项目)。有时图片也出现在错误的
GONE
,当需要时再设置为VISIBLE
。问题是有时候,可能是由于
RecyclerView
的回收行为,本应该是GONE
的项目在错误的位置上是VISIBLE
的。例如:
块引用:
第1个项目包含文本
第2个项目包含图像
第3个项目包含图像
我不断向下滚动到第x个项目,然后向上滚动,这就是我得到的结果:块引用:
第1个项目包含来自第x个项目的图像,有时是第3个项目
第2个项目包含图像
第3个项目包含图像
我正在使用一个自定义的ViewHolder,它extends RecyclerView.ViewHolder
。 CustomViewHolder
的目的是进行布局声明和初始化。 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);
但是不知怎么的,这个图片仍然被用在了之前的项目上(不仅仅是第一个项目)。有时图片也出现在错误的
ImageView
中。 图片 D 应该在 ImageView
D 中,但实际上却出现在 ImageView
A 中。
关于如何设置和流畅使用 RecyclerView
,有什么指南吗?
如果我漏掉了什么,或需要提供更多代码,请告诉我:D
else
语句,以便在需要默认重置时使用。但是我的方法是否正确呢?也就是说只使用一个布局。 - Kevin Murvie