Android布局建议(RecyclerView、ViewPager和CardView)

Android布局建议(RecyclerView、ViewPager和CardView),android,android-viewpager,android-recyclerview,android-cardview,Android,Android Viewpager,Android Recyclerview,Android Cardview,我需要一些建议来实现我的android应用程序的设计 我正在使用RecyclerView来显示CardView的列表。没问题。但是,我需要一个顶部带有ViewPager的部分,该部分显示其他cardwiew和水平切换: 看 我已经读到,Viewpager不是很适合在RecyclerView中构建的,所以也许更好的方法是在Viewpager中创建一个ScrollView,然后在下面创建一个RecyclerView,并禁用RecyclerView的滚动 另外,我是否可以将ViewPager视图与ca

我需要一些建议来实现我的android应用程序的设计

我正在使用
RecyclerView
来显示
CardView
的列表。没问题。但是,我需要一个顶部带有
ViewPager
的部分,该部分显示其他
cardwiew
和水平切换:

我已经读到,
Viewpager
不是很适合在
RecyclerView
中构建的,所以也许更好的方法是在
Viewpager
中创建一个
ScrollView
,然后在下面创建一个
RecyclerView
,并禁用
RecyclerView
的滚动

另外,我是否可以将
ViewPager
视图与
cardwiew
一起使用

编辑:

问题解决了:我尝试了fmt.Println.MKO评论中的这个解决方案

您可以这样做,定义两个项目类型,一个用于您的常用卡,另一个用于您的2.RecyclerView,使用int-getItemViewType(int-position),返回特定类型。在onCreateViewHolder(ViewGroup parent,int viewType)中,您可以根据类型创建一个viewholder,可以是您的卡,也可以是2。回收视图

在我的
明信片中,两个
RecyclerView
使用的适配器

   @Override
        public int getItemViewType(int position) {
            RecyclerItem p = items.get(position);
            if (p.isHeader){
                return TYPE_HEADER;
            }
            return TYPE_POST;
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int type) {
        switch (type) {
            case TYPE_HEADER:
                RecyclerView rv = (RecyclerView) LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.home_header, viewGroup, false);
                rv.setHasFixedSize(true);
                PostsCardAdapter adapter2 = new PostsCardAdapter(this.headerPosts);
                rv.setAdapter(adapter2);
                LinearLayoutManager layoutManager = new LinearLayoutManager(viewGroup.getContext(), LinearLayoutManager.HORIZONTAL, false);
                rv.setLayoutManager(layoutManager);
                return new HeaderViewHolder(rv);

            default:
                View postView = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.post, viewGroup, false);
                return new PostsViewHolder(postView);
        }

    }
对于
TYPE\u标题


只需将scrollTo方法应用于viewPager,并找到一个解决方案,以显示带有圆圈的组件,圆圈指示显示的是哪个项目。

据我所知,您在下面有一个水平滚动视图和垂直滚动视图

为此,必须在activity/fragment layout.xml中添加两个RecyclerView

在第一个RecyclerView中,添加了一个水平方向的LinearLayoutManager


你不需要浏览页面

“另外,我可以使用ViewPager view CardView吗?”。对对于剩下的,你可以为你想要展示的东西添加一个小的设计模型吗?特别是“但是,我需要一个顶部部分[…]”。好的,谢谢你的更新。我不会提供答案,因为我真的不知道recycler视图和view pager的可用性友好程度如何-但我建议只使用自定义项目的ViewHolder模式实现recycler视图。在这些自定义项中(使用相对布局),在顶部添加视图页面,在下面添加两个CardView。回收器视图和ViewPager都不需要太多时间来实现。测试它并提供结果。补充:我不会使用你的第二种方法。@fmt.Println.MKO你能帮我做同样的事情吗。实际上,我需要在viewpager中滑动这种类型的cardview。是的,但是否可以使用viewpager的功能,例如:仅显示1项,在滑动开始时自动滚动列表,并在单独的控件中显示当前的“页码”?是的,只需使顶部卡的宽度与屏幕宽度匹配,以及滚动侦听器,它从另一个RecycleServiceWno的LayoutoutManager调用scrollTo方法。我只需要ViewPager显示4个项目。就像幻灯片。啊,我明白了。如果viewPager在recycler视图中可能会出现问题,但如果不是,我看不出在recycler视图上方使用viewPager会有问题?啊,那么您的1。RecyclerView应该是2的第一个元素。回收视图?然后,您可以这样做,定义两个项目类型,一个用于您的常用卡,另一个用于您的2.RecyclerView,使用int getItemViewType(int position),返回特定类型。在onCreateViewHolder(ViewGroup parent,int viewType)中,您可以根据类型创建一个viewholder,可以是您的卡,也可以是2。回收视图