Android 另一个RecyclerView中的RecyclerView

Android 另一个RecyclerView中的RecyclerView,android,android-recyclerview,Android,Android Recyclerview,我试图在RecyclerView父级中创建一个混合项,其中包含一些CardView,另一个RecyclerView。如果您还看不到它,想象一下在RecyclerView中有几个ListView(其中ListView按标题分组) 以下是我绘制的一个结构,以使其更加清晰: 上面是我试图实现的布局结构。请注意,这只是计划。我不确定在RecyclerView中设置RecyclerView是否是个好主意 到目前为止,我已经尝试使用来实现这种复杂的布局。但问题是,当在RecyclerView中添加不同的项

我试图在
RecyclerView
父级中创建一个混合项,其中包含一些
CardView
,另一个
RecyclerView
。如果您还看不到它,想象一下在
RecyclerView
中有几个
ListView
(其中
ListView
按标题分组)

以下是我绘制的一个结构,以使其更加清晰:

上面是我试图实现的布局结构。请注意,这只是计划。我不确定在RecyclerView中设置RecyclerView是否是个好主意

到目前为止,我已经尝试使用来实现这种复杂的布局。但问题是,当在RecyclerView中添加不同的项目类型(例如水平滚动旋转木马)时,它隐藏在标题中

我现在想不出别的办法了。你们对如何实现这个布局有什么建议吗


简单地说,如果您理解我的意思,它是一个子
CardView
中的一个分段
RecyclerView
父视图中的一个分段
RecyclerView

不鼓励在另一个RecyclerView中拥有一个RecyclerView。但是,如果要使用嵌套的RecyclerViews实现上述功能,可以使用布局管理器将最内层(绿色)的RecyclerView包装到其内容高度。现在已经有一个这样的布局管理器可用

另外,通过如下设置onTouchListener,确保在最里面的RecyclerView上禁用触摸手势

mRecyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener {

    @Override
    public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
        return true;
    }

    @Override
    public void onTouchEvent(RecyclerView rv, MotionEvent e) {

    }

    @Override
    public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {

    }
});

你的解决办法很简单。您需要的是3个片段(片段A:RecyclerView 1)(片段B:RecyclerView 2)。(片段C:旋转木马页脚)。其中三个在一个活动中是独立的。你明白吗?我不能在父回收视图中有固定的片段。这些组是根据模型填充的。嗯,我可能不太明白你的意思。但我记得上一次我有这样的布局。对我来说这似乎很简单。CardView是静态的,但是内容是从模型填充的,对吗?甚至CardView也是从模型填充的。它可以有两张以上的卡片。我还希望它能够把旋转木马卡之间的任何地方。不过谢谢你的建议:-)我回家后会试试这个。我选择制作嵌套的RecyclerViews,然后使用你建议的库。谢谢,终于成功了!我在这里的实现:很高兴知道它对你有用。不过,在您的实现中,您将在onBindViewHolder中添加RecyclerView ItemTouchListener,这是一个警告。由于视图被回收,您最终将向RecyclerView添加多个侦听器。我建议您将侦听器添加到ViewHolder类以提高性能。快乐编码:)当在父recyclerview上发生触摸传播时,如果允许您的子recyclerview接收手势,有时您的父recyclerview可能不会滚动,因为子recyclerview正在吸收滚动手势。作为故障安全措施,我添加了它。如果不使用它,您可以删除它。@SreekanthKarumanaghat您可以将单击侦听器添加到任何子视图中,因为您仅通过app compat界面禁用滚动