当前位置: 首页 > 面试题库 >

Android-具有一个布局,多个set的RecyclerView

何章横
2023-03-14
问题内容

我的布局基本上全部统一,其中包含应用程序主供稿所需的所有内容。首先将所有可变项(图像,视频缩略图等等)设置为GONE,并VISIBLE在需要时设置为。

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

范例:

项目1包含文字

项目2包含图片

项目3包含图片

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

项目1包含来自项目x的图片,有时包含项目3

项目2包含图片

项目3包含图片

我正在使用html" target="_blank">自定义的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
    );

我已将每个可见性设置为GONE是否从服务器未获得url

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

但是以某种方式,图像仍可在先前的项目上重复使用(是的,不仅是项目1)。有时形象也有误ImageView。图像D应该在ImageViewD中,但它在ImageViewA中。

有关设置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);
}

如果要在运行时设置其可见性,请对作为列表项的每个项执行此操作。



 类似资料:
  • 问题内容: 我很好奇flexbox是否可以使用这种布局。我似乎无法得出第3和第4格归入第二。这对于浮点数来说非常容易,只是好奇是否缺少一些可能对flexbox有帮助的属性。 布局 标记 问题答案: Flexbox不喜欢在多列或多行中扩展的flex项目,因为实际上flexbox没有网格概念。 但是,使用一些技巧,您可以实现此布局(以及更复杂的布局): 使用行布局 │1│2│3│4│ └─┴─┴─┴─

  • 问题内容: 我必须在Android中构建更复杂的自定义视图。最终布局应如下所示: 但是,我只想在XML文件中定义它(不定义SomeView,SomeOtherView等): 这在Android中可行吗?如果可以,那么最干净的方法是什么?我想到的可能解决方案是“重写addView()方法”和“删除所有视图并在以后再次添加它们”,但是我不确定该走哪条路… 在此先感谢您的帮助!:) 问题答案: 绝对有可

  • 问题内容: 对于MYSQL,我正在使用以下查询: 没关系,但我想向其投放15个以上的广告: 我要如何添加呢? 编辑: 根据猎人的建议: 这很棒!谢谢 问题答案: 这样的事情应该为您工作: 另外,如Simon所建议的,您可以这样做来避免输入两次值: 资料来源:http : //www.karlrixon.co.uk/writing/update-multiple-rows-with-differen

  • 有人能帮我用Apache FUSE ESB配置两个具有相同基本URI的JAX-RS服务吗?我使用的JBoss Fuse6.0版本包含karaf容器、Apache Camel和CXF(JAX-RS)。配置是用Blueprint完成的。当我只配置一个JAX-RS服务时,一切都很好。 我尝试使用基本URI为两个JAX-RS bean提供服务。第一个bean为,第二个bean为。 在camel中如何配置这

  • 问题内容: 我有一个小部件,当切换选项时,它会改变。这会使所有布局和小部件失效。我保留所有布局的列表,因此可以使用类似于以下答案的方法删除它们: 如何摆脱旧的布局并设置新的布局? 该文档非常简洁,显然不适用于python: QWidget.setLayout(self,QLayout) QLayout参数将其所有权转移到Qt。 将此窗口小部件的布局管理器设置为布局。 如果此小部件上已经安装了布局管

  • 我使用SpringBoot创建了一个SOAP Web服务服务器,并且我能够成功创建一个endpoint。但是,我无法创建多个endpoint并使用不同的URL访问它们。我想通过URL来访问处理该过程。 每个endpoint接收到的SOAP消息具有相同的模式。(命名空间和localpart是相同的!!!)我不想公开WSDL。 例如。 userA向以下URL发送以下SOAP消息:http://soap