安卓布局: scrolling list with header

标签 android android-recyclerview

这不是设计问题,我已经设计了项目。我对如何实现它感到困惑。

我的任务是为 Android 设计一个 View ,该 View 具有用户帖子及其下方评论的 View 。该帖子包含一些额外的信息和与评论截然不同的设计,但所有这些都需要像网页一样滚动滚动(哦,我被多年的网络开发宠坏了......).

我目前的解决方案是嵌套一个 LinearLayout(在 View 顶部以包含用户的帖子)和一个 RecyclerView(在帖子下方以显示评论)在垂直 ScrollView 中。信息确实显示了,但是 RecyclerView 当然会独立于其上方的 LinearLayout 滚动,从而破坏 View 的功能。

如果可能的话,我希望继续使用 RecyclerView

最好的情况是让带有帖子的 LinearLayout 滚动一定量,然后 RecyclerView 接管。 但是,我不想用 200 多行难看的代码毒化我的代码库来实现这一点,所以如果这是一项艰巨的任务,我宁愿寻找替代方案。

最佳答案

首先要了解的是:你真的需要一个RecyclerView,或者更好的是,你真的需要回收吗?

如果答案是,则方法是在RecyclerViewAdapter 中使用两种不同的项目类型(有关详细信息,参见 herehere )。这个概念已经出现在 ListView 中:主要区别在于 RecyclerView 强制使用 View Holder 模式。它并没有那么复杂,更重要的是,RecyclerView 应该是用来解决这个问题的。根据您的 UI 设计,您可能还希望针对不同类型的评论(纯文本、图像等)使用不同的 View 类型。请记住,当 RecyclerView 包含在 ScrollView 中时,回收将不起作用,因为其中的所有项目将被一次绘制以计算高度父 ScrollView 的内容。

如果答案是,那么您可以在运行时创建您的 View 并将它们添加到 ScrollView 中的父 LinearLayout。它实际上只不过是一个 for 循环。

一种更奇特的方法是为用户的帖子使用 ItemDecoration,但我看不出在这种情况下有任何具体优势。

关于安卓布局: scrolling list with header,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51451409/

相关文章:

android - RecyclerView 超出列表边界时,如何在 RecyclerView 中添加项目透明度?

android - onBindViewHolder 绑定(bind) View 不一致

java - RecyclerView 搜索过滤器不起作用

android - 如何处理来自 EditText 的华氏温度并打印其对应的摄氏温度?

java - 如何维护离线应用程序的 session android

键盘可见后,Android WindowManager 窗口不会重新定位

android - Realm 对象和反序列化包含具有整数和字符串的数组的数组,以便与 Realm 一起使用

android - AppBarLayout 上的 EdgeEffect

android - RecyclerView 与 CardView

java - 通过查看 RecyclerView 的值来查找 RecyclerView 行位置