Android 具有单个CardView的RecyclerView

Android 具有单个CardView的RecyclerView,android,android-recyclerview,android-cardview,Android,Android Recyclerview,Android Cardview,我希望达到以下效果: 它基本上是驻留在单个CardView中的列表。因为它是一张单张卡,所以它上下滑动使它看起来很漂亮。使用滚动视图和线性布局很容易实现。但是,当列表中有很多元素时,该解决方案会有性能问题,因为所有元素的视图都在内存中。有没有一种方法可以使用RecyclerView实现这一点 任何帮助都将不胜感激 我试过用物品装饰,效果很好。它基本上是从cardview本身以及如何绘制阴影中改编的代码 下面的示例使用了一些额外的装饰边距、分隔符和标题背景,但这就像它可以看起来一样,不需要使用任何

我希望达到以下效果:

它基本上是驻留在单个CardView中的列表。因为它是一张单张卡,所以它上下滑动使它看起来很漂亮。使用滚动视图和线性布局很容易实现。但是,当列表中有很多元素时,该解决方案会有性能问题,因为所有元素的视图都在内存中。有没有一种方法可以使用RecyclerView实现这一点


任何帮助都将不胜感激

我试过用物品装饰,效果很好。它基本上是从cardview本身以及如何绘制阴影中改编的代码

下面的示例使用了一些额外的装饰边距、分隔符和标题背景,但这就像它可以看起来一样,不需要使用任何其他视图或布局


对于那些正在寻找实现此效果的解决方案的人,您只需创建一个CardView并设置其属性Card的高程、背景、使用范围。。。给你的回收站。大概是这样的:

private void init() {
    recyclerView.setLayoutManager(new LinearLayoutManager(this));
    recyclerView.addItemDecoration(
        new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));
    setCardViewBackgroundToRecyclerView(recyclerView);

    List<String> data = new ArrayList<>();
    for (int i = 0; i < 30; i++) {
        data.add("Item " + i);
    }
    adapter = new TestAdapter(data);
    recyclerView.setAdapter(adapter);
}

private void setCardViewBackgroundToRecyclerView(RecyclerView recyclerView) {
    CardView cardView = new CardView(this);
    cardView.setCardBackgroundColor(ContextCompat.getColor(this, R.color.white));
    cardView.setUseCompatPadding(true);
    cardView.setPreventCornerOverlap(false);
    int cardShadow = (int) cardView.getCardElevation();
    recyclerView.setPadding(cardView.getContentPaddingLeft() + cardShadow,
        cardView.getContentPaddingTop() + cardShadow + 3,
        cardView.getContentPaddingRight() + cardShadow,
        cardView.getContentPaddingBottom() + cardShadow + 3);
    ViewCompat.setElevation(recyclerView, cardView.getCardElevation());
    recyclerView.setBackground(cardView.getBackground());
}
结果:

将RecyclerView包装在CardView中如何我的直接想法是,我没有尝试另一个我能想到的技巧是为第一个和最后一个项目设置viewtype,因此他们使用不同的视图保持器,这会使卡片保持静态,顶部和底部不会从屏幕边缘滑下我想我可以想象cardview的问题。请使用自定义的viewholder尝试我的第二条评论:D不是卡片视图,而是半卡片样式的背景viewholder@MikeM. “回收者”视图的顶部和底部都有圆角,这就是他想要的:D