如何使用RecyclerView和CardView

5

我在Android开发方面没有太多经验,想在我的应用程序中实现RecyclerView。 Android Studio的版本没有Android L,也没有安装选项。每次它都说android.support.widget.v7.RecyclerView没有使用,并禁用了从导入包中。我在layout文件和Gradle.build中都给出了参考,但我的问题仍然存在,请有人帮忙吗?


1
请发布您的 gradle.build 和 xml 布局,以便使用它们来实现 RecyclerView。 - doubleA
1
你应该更新你的SDK。 - Ahmad Nawaz
6个回答

8

请跟随以下内容

  • 材料设计中的CardView和RecyclerView

http://icetea09.com/blog/2014/12/19/android-cardview-and-recyclerview-in-material-design/

将以下内容添加到dependencies中:

    compile 'com.android.support:cardview-v7:22.2.0'
    compile 'com.android.support:recyclerview-v7:22.2.0'

并更新模块的build.gradle中的gradle

  • 每个例子的示例:

CardView

<android.support.v7.widget.CardView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    card_view:contentPadding="16dp"
    card_view:cardElevation="2dp"
    card_view:cardCornerRadius="5dp">

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <TextView
            style="@style/Base.TextAppearance.AppCompat.Headline"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Title" />

        <TextView
            style="@style/Base.TextAppearance.AppCompat.Body1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Content here" />

    </LinearLayout>

</android.support.v7.widget.CardView>

RecyclerView:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycler_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</LinearLayout>

我刚刚为这个回复添加了其他信息,链接可能会在未来被禁用,这就是原因。 - ʍѳђઽ૯ท
什么是 AndroidDev 的原因? - Awdi
1
该链接可能在未来被禁用。因此,@AndroidDev想要添加示例。 - Abhishek
但是你的答案解决了我的问题。感谢你的帮助。接受你的答案。 - Awdi
@abhishek,请也回答一下这个问题:http://stackoverflow.com/questions/36393540/no-shadow-elevation-underneath-second-card-if-there-are-two-card-in-the-layout - user4909407

2

如何在Android中使用Recycler View的解释

下面是使用Recycler View的步骤及说明:

  • 打开app gradle文件

  • 添加Recycler View的依赖 compile 'com.android.support:recyclerview-v7:25.3.1'(在创建项目时,请使用最新版本的依赖),并同步项目。

  • 在你的activity/fragment文件中使用Recycler View - Recycler View可在v7小部件支持文件中找到

  • 进入你的Java文件,获取对这个Recycler View的引用

  • 创建一个新的布局(xml)文件,以创建你想要填充到Recycler View中的自定义视图,并将其命名为custom_row.xml

  • 创建一个Java类,将其命名为RecyclerviewHolder,并扩展它与RecyclerView.ViewHolder,并创建一个超级构造函数,然后访问你自定义行XML文件中的所有视图

  • 现在创建另一个名为RecylerAdapterMyRecyclerAdapter的Java类,并将其扩展为RecyclerView.Adapter,并在此处传递你的RecyclerviewHolder类,如:

    class RecyclerAdapter extends RecyclerView.Adapter<RecyclerviewHolder>

  • 然后创建一个构造函数,只需按alt+enter键即可为你生成三个方法,即你只需要覆盖RecyclerView.Adapter类的这三个方法

这三种方法是:

{ onCreateViewHolder,OnBindViewHolder,getCount }

  • OnCreateViewHolder - 在此方法中,您将传递您的自定义视图布局以使用LayoutInflater进行填充,并在此方法中仅需要创建RecyclerviewHolder类的对象,然后将此视图对象返回到该方法中。

  • OnBindViewHolder - 您可以在此处对您的视图执行任何操作,只需在所有视图名称前缀中加入holder.并使用它们执行任何操作或进行任何事件处理

  • getCount - 在这里,我们将返回计数值,即您想要填充自定义视图的次数

  • 现在,进入你的Activity或Fragment文件,并创建一个RecyclerAdapter类的对象,并将此适配器设置在你的Recycler View上。


1
根据文档,您需要将特定的依赖项添加到您的gradle文件中:
dependencies {
    ...
    compile 'com.android.support:appcompat-v7:27.0.1'
    compile 'com.android.support:cardview-v7:27.0.1'
    compile 'com.android.support:recyclerview-v7:27.0.1'

}

要使用它,请始终以android.support.v7.widget.为前缀。


1
@AndroidDev 刚刚更新了,但文档还没有更新。 - Hugo Gresse

0

RecyclerView使用Adapter将List项传递给它。该适配器返回您选择传递到RecyclerView的List Item类型的对象。在本文中,您将学习如何在应用程序中实现RecyclerView以及如何通过CardView对象滚动它们。

步骤: 1)构建一个CardView 2)构建数据模型以填充您的CardView 3)构建RecyclerView 4)构建连接数据到RecyclerView的适配器 5)将适配器设置为您的RecyclerView

本教程将帮助您采取这些步骤,在Android应用程序中使用RecyclerView和CardView:

https://knowledgecollisions.wordpress.com/2016/03/29/using-recyclerview-and-cardview-in-your-android-app/


0

你可以在不使用CardView的情况下使用Recyclerview。但是CardView提供了更多的功能来设计列表行。


0
implementation 'com.android.support:design:29+'

根据您在build.grade(:app)文件中设置的targetSdkVersion版本进行更改,对于我的情况,它是29


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接