How to access RecyclerView in androidx?

AndroidAndroid Gradle-PluginAndroidx

Android Problem Overview


Hi I'm new to Android development and I'm trying out a tutorial on MVVM I found on YouTube. The example project in the video uses AppCompat but I converted mine to androidx because from what I read its the current(?) version to use? Am I mistaken with this thinking?

Anyways Part of the tutorial makes use of a RecyclerView and I can't access it on my activity_main.xml file stating that v7 is an unresolved package. android.support.v7.widget.RecyclerView shows up with v7 onwards as red text. I know I can revert it back to older versions but I guess I am trying to make this work since moving forward its expected to know how to use androidx right?

I don't know how to add the RecyclerView to the project with my current project migrated to androidx.

What I've tried:

  • Adding implementation 'com.android.support:recyclerview-v7:28.0.0' based on the docs
  • Invalidating cache and restarting

My Dependencies:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.1.0-alpha04'
    implementation 'androidx.appcompat:appcompat:1.0.0-beta01'
    implementation 'androidx.cardview:cardview:1.0.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.1.0-alpha4'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha4'

    //RecyclerView
    implementation 'com.android.support:recyclerview-v7:28.0.0'


    // Lifecycle components
    implementation "androidx.lifecycle:lifecycle-extensions:2.1.0-alpha04"
    annotationProcessor "androidx.lifecycle:lifecycle-compiler:2.1.0-alpha04"

    // Room Components
    implementation "androidx.room:room-runtime:2.1.0-alpha06"
    annotationProcessor "androidx.room:room-compiler:2.1.0-alpha06"
}

My activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <view class="android.support.v7.widget.RecyclerView"
        android:id="@+id/recycler_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:listitem="@layout/todo_item"/>

</androidx.constraintlayout.widget.ConstraintLayout>

Android Solutions


Solution 1 - Android

RecyclerViewwas migrated to AndroidX as well:

  1. Updatebuild.gradle:
implementation 'androidx.recyclerview:recyclerview:1.1.0'
  1. Change layout file:
<androidx.recyclerview.widget.RecyclerView>...</androidx.recyclerview.widget.RecyclerView

Solution 2 - Android

Official document : https://developer.android.com/jetpack/androidx/migrate

Step 1: Check and set the lines in gradle.properties:

android.useAndroidX=true
android.enableJetifier=true

Step 2: Change

implementation 'com.android.support:recyclerview-v7:28.0.0'

to

implementation 'androidx.recyclerview:recyclerview:1.0.0' //Update to latest version

And finally: Change the tag

 <view class="android.support.v7.widget.RecyclerView"...>

to

<androidx.recyclerview.widget.RecyclerView
     android:id="@+id/recycler_view"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     tools:listitem="@layout/todo_item"/>

Solution 3 - Android

you can use the materials design Dependencies

implementation 'com.google.android.material:material:1.2.0-alpha04'
implementation 'com.android.support:multidex:1.0.3'

Solution 4 - Android

If you follow the above instructions and the RecyclerView still appears as a grey box in the layout preview, try rebuilding your project.

Solution 5 - Android

This issue is solved by adding Dependency to the build.gradle(Module:App):

implementation 'androidx.recyclerview:recyclerview:1.1.0'

and Adding this code to your preferred layout in order to use RecyclerView

<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/recyclerView"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

here is the link to the doc: https://developer.android.com/guide/topics/ui/layout/recyclerview

Solution 6 - Android

Usually just right-click on build.gradle (Module: app) > Refactor > Migrate to AndroidX. To migrate and rename all the dependencies automatically.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionkobowoView Question on Stackoverflow
Solution 1 - AndroidS-ShView Answer on Stackoverflow
Solution 2 - AndroidWilson TranView Answer on Stackoverflow
Solution 3 - AndroidzakariaView Answer on Stackoverflow
Solution 4 - AndroidCherif DialloView Answer on Stackoverflow
Solution 5 - AndroidSateerView Answer on Stackoverflow
Solution 6 - AndroidDaniel BandiView Answer on Stackoverflow