Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to access RecyclerView in androidx?

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>
like image 545
kobowo Avatar asked Apr 14 '19 15:04

kobowo


People also ask

What is RecyclerView adapter?

The RecyclerView class extends the ViewGroup class and implements ScrollingView interface. It is introduced in Marshmallow. It is an advanced version of the ListView with improved performance and other benefits.

How does RecyclerView work?

RecyclerView is the ViewGroup that contains the views corresponding to your data. It's a view itself, so you add RecyclerView into your layout the way you would add any other UI element. Each individual element in the list is defined by a view holder object.


Video Answer


5 Answers

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 
like image 125
S-Sh Avatar answered Sep 21 '22 23:09

S-Sh


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"/> 
like image 32
Wilson Tran Avatar answered Sep 20 '22 23:09

Wilson Tran


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'
like image 38
zakaria Avatar answered Sep 21 '22 23:09

zakaria


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

like image 36
Cherif Diallo Avatar answered Sep 21 '22 23:09

Cherif Diallo


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

like image 24
Sateer Avatar answered Sep 20 '22 23:09

Sateer