当前位置: 首页 > 知识库问答 >
问题:

带字符的RecyclerView分隔符

怀德馨
2023-03-14

我想显示一个项目列表,并使用“.”

我对此进行了研究,发现RecyclerView有一个内置的ItemDecoration功能。然而,我只能找到如何画一条线:

recyclerView.addItemDecoration(
            new DividerItemDecoration(this, DividerItemDecoration.HORIZONTAL));

从我所看到的,您必须为此使用可绘制的,并且隐藏最后一个分隔符仍然不是很方便。

我发现的另一个选项是在RecyclerView的适配器内创建异构布局:https://guides.codepath.com/android/Heterogenous-Layouts-inside-RecyclerView因此,将分隔符作为第二个viewType布局,并在项目布局后对其进行充气。但这似乎有点过分,而且适配器的可重用性也较低。与此类似,有一个选项可以为RecyclerView创建一个布局,其中包含(项目和分隔符)视图,并在RecyclerView的适配器中对其进行充气。然而,这似乎也不是一种有意的方式。

我很确定这个功能是可行的,但我怀疑我列出的任何一种方法是否正确。有什么建议吗?

共有3个答案

廖君昊
2023-03-14

最简单的方法是考虑”

if(position==list.Size()-1){
   divider.setVisibility(View.Gone)
}else{
   divider.setVisibility(View.Visible)
}

如果您有其他逻辑要隐藏/显示,请相应地更改它。

这样,如果关系发生变化,您也可以更改字符,或者在列表的任何项目中隐藏/显示它。不仅仅是最后一项。

童宏富
2023-03-14

最干净的解决方案是创建自己的ItemDecoration实现。你只需要重写两个方法。

使用getItemOffsets()在项目之间添加偏移量,类似于添加填充或边距。

现在,您在 RecyclerView 项目之间有了“可用”空间,通过重写 onDraw() 方法,您可以轻松绘制 ”

壤驷宏才
2023-03-14

它可以简单地在您的布局和传递给ViewHolder的模型中实现,以便将其绑定。为了更清楚,您的模型可以有一个标志,指定是否应该显示分隔符,然后在相应地绑定视图时,只需显示/隐藏”

 类似资料:
  • 我的问题是:有没有一个分析器能够检测标记周围的分隔符(在我们的示例中),或者有没有一个分析器能够检测多字结构? 恐怕我们必须创建自己的分析器,但我不太知道该从哪里开始。

  • 我想拆分从蓝牙获得的字符串。我正在使用 以前用分裂字符串做过。如果我在没有分隔符的情况下得到了大量的数据,应用程序就会崩溃,同时试图做不可能的事情。 如何检查是否有分隔符,然后继续拆分或跳过它?

  • 我尝试在我的GridLayout RecyclerView中添加水平分隔线。但出于某种原因,分割线没有出现。 作为替代方法,我使用具有 2 个参数的 addItemDecoration 方法,其中第二个参数是索引,之后添加 ItemDecoration。 它强制关闭,但有以下例外: 这个尺寸意味着什么?为什么是零? 可能是因为我在活动而不是片段中使用此回收器视图吗? P、 美国:适配器没有问题;它

  • 我正在构建一个名为“id”的查询参数,它是一个列表,所以我有类似于localhost:8080/application?id=1 (我知道我的方法不够,我需要写第一个?id=) 方法 我的问题是:为什么我收到这个错误在Collectors.joining(" 我正在使用OpenJDK

  • 问题内容: 在大量的Unicode字符中,有一些实际上代表多个字符,例如U + FB00连字ff表示两个’f’字符。有什么容易的方法可以将这样的字符转换成多个单个字符?最好是在标准Java API中可用的东西,但是如果需要,我可以引用一个外部库。 问题答案: U + FB00是兼容字符。通常,Unicode不支持连字的单独代码点(认为是否使用连字以及何时使用连字是布局决定,并且不影响数据的存储方式)

  • 问题内容: 我有从.net应用程序A,B,C,D,E,F获取的字符串, 我想写一个SQL选择语句像 这在t-SQL中将不起作用,因为它使用不将值分开的一个字符串。有什么办法可以做到这一点? 问题答案: 它认为最简单的方法是动态SQL生成: