web-dev-qa-db-fra.com

Je n'ai pas importé la bibliothèque Recycler View AndroidX, mais je l'utilise. Pourquoi et comment ça marche?

build.gradle (application)

Android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.example.todolistapp"
        minSdkVersion 16
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"

    implementation 'androidx.appcompat:appcompat:1.0.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'

    // Room
    def room_version = "2.0.0"
    implementation "androidx.room:room-runtime:$room_version"
    kapt "androidx.room:room-compiler:$room_version"

    // ViewModel and LiveData
    def lifecycle_version = "2.0.0"
    implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
    kapt "androidx.lifecycle:lifecycle-compiler:$lifecycle_version"

    // For Floating Action Button
    implementation 'com.google.Android.material:material:1.0.0'
}

comme vous pouvez le voir dans mes dépendances, je n'ai pas importé la bibliothèque Androidx vue recyclée.

androidx.recyclerview: recyclerview: 1.0.0

mais comme indiqué ci-dessous, je peux l'utiliser confortablement dans ma mise en page (activity_main.xml) et le code MainActivity.

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent">

    <androidx.recyclerview.widget.RecyclerView
        Android:id="@+id/recyclerViewTasks"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:clipToPadding="false"
        Android:paddingBottom="80dp"/>

    <com.google.Android.material.floatingactionbutton.FloatingActionButton
        Android:id="@+id/fab"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_gravity="bottom|end"
        Android:layout_margin="16dp"
        Android:tint="@Android:color/white"
        app:srcCompat="@Android:drawable/ic_input_add"/>
</FrameLayout>

MainActivity.kt

import kotlinx.Android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity(), TaskAdapter.TaskViewCliskListener {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        recyclerViewTasks.layoutManager = LinearLayoutManager(this)
}

Quel est responsable de ce comportement?

14
EdgeDev

Selon les dépendances de com.google.Android.material:material:1.0.0 :

androidx.recyclerview: recyclerview: 1.0.0

Cela signifie que la bibliothèque de matériaux prend déjà une dépendance transitoire de RecyclerView et que vous n'avez pas besoin de l'inclure manuellement vous-même.

16
ianhanniballake

Je n'ai pas importé la bibliothèque Recycler View AndroidX, mais j'utilise. Pourquoi et comment ça marche?

Parce que vous avez ajouté les dépendances de com.google.Android.material:material:1.0.0

Pas besoin d'ajouter androidx.recyclerview:recyclerview:1.0.0 si vous avez déjà ajouté com.google.Android.material:material:1.0.0

7
Nilesh Rathod

com.google.Android.material:material:1.0.0 Inclut le composant RecyclerView Vous n'avez donc pas besoin de l'ajouter en externe.

si vous avez ajouté com.google.Android.material:material:1.0.0à vos dépendances d'application, vous n'avez pas besoin d'ajouter androidx.recyclerview:recyclerview:1.0.0 à vos dépendances car il est déjà inclus dans la bibliothèque de matériaux .

Pour plus d'informations https://developer.Android.com/jetpack/androidx/migrate/class-mappings

4
Ashvin solanki

J'ai essayé et testé. com.google.Android.material:material:1.0.0 inclut également RecyclerView. Peut-être est-ce là pour donner au design du matériau un aspect n semblable à celui de MaterialButton

1
Zaid Mirza
dependencies{

implementation 'com.google.Android.material:material:1.0.0'

}

ou

dépendances {

implementation 'com.Android.support:design:your version'

}

si vous avez déjà ajouté

com.google.Android.material: matériel: 1.0.0 ou com.Android.support:design:version

dans la version précédente de Android recyclerview dans la bibliothèque de conception, mais dans la version d'Androidx sa bibliothèque de matériaux.

dans vos dépendances, les dépendances de recyclage ne sont pas nécessaires. son déjà ajouté dans la bibliothèque de matériaux/conception

Vérifiez ici

pour les détails Android Library

1
Kamrujjaman Joy