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

Android layout advice (RecyclerView, ViewPager and CardView)

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

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

http://i.stack.imgur.com/akg2i.png

我读到 Viewpager 不太适合放在 RecyclerView 中,所以也许更好的方法是创建 ScrollViewViewPager然后在下面的 RecyclerView 内并禁用 RecyclerView ?

的滚动

此外,我可以将 ViewPager 视图与 CardView 一起使用吗?

编辑:

好的,问题已解决:我尝试使用 fmt.Println.MKO 评论

中的这个解决方案

you can do this, define 2 Items types, one for your usual cards, and one for your 2.RecyclerView, with int getItemViewType(int position), you return the specific type. and in onCreateViewHolder(ViewGroup parent, int viewType) you create a viewholder depending on type, either just your card or the 2. RecyclerView

在我的 PostCardAdapter 中被 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_HEADER

onBindViewHolder 中没有具体要做的事情

只需要应用 scrollTo 方法来像 viewPager 一样工作,并找到一个解决方案来显示带有圆圈的组件,指示显示的是哪个项目。

据我了解,您在下方有一个水平滚动视图和一个垂直滚动视图。

要做到这一点,您必须在 activity / 片段 layout.xml

中添加两个 RecyclerView

在您的第一个 RecyclerView 上添加一个水平方向的 LinearLayoutManager 。

您不需要 viewpager。