Androidx RecyclerView GridLayoutManager не может быть преобразован в LayoutManager - PullRequest
0 голосов
/ 03 марта 2019

Я создаю RecyclerView с сеткой, используя GridLayoutManager.Все выглядит хорошо, пока я не попытаюсь установить макет в RecyclerView.Я использовал этот код / ​​файлы макета раньше, поэтому я знаю, что он работает, однако после перехода на Androidx у меня внезапно возникают проблемы.

Код (в действии) :

RecyclerView recyclerView = findViewById(R.id.rv_checks);
    recyclerView.setHasFixedSize(true);
    recyclerView.setNestedScrollingEnabled(false);
    recyclerView.setFocusable(false);

    GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3);
    recyclerView.setLayoutManager(gridLayoutManager);

RecyclerView :

<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/rv_checks"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/action_container"
    android:layout_marginTop="5dp"
    android:clipToPadding="false"
    android:padding="20dp"/>

build.gradle :

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

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.0.0-beta01'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.2'

    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.1.0-alpha4'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha4'

    implementation 'androidx.recyclerview:recyclerview:1.0.0'

}
apply plugin: 'com.google.gms.google-services'

Ошибка :

error: incompatible types: GridLayoutManager cannot be converted to LayoutManager

Ответы [ 2 ]

0 голосов
/ 03 марта 2019

Я только что исправил эту проблему, проблема в этом примере заключалась в том, как объявлялось GridLayoutManager (решение ниже).Это, однако, не было постоянным исправлением, поскольку проблема заключалась в переходе на AndroidX.Решение для устранения этих проблем можно найти здесь , которое может (как это было в моем случае) вызвать конфликт библиотеки, который можно исправить, например this .

Код (в действии) :

RecyclerView recyclerView = findViewById(R.id.rv_checks);
    recyclerView.setHasFixedSize(true);
    recyclerView.setNestedScrollingEnabled(false);
    recyclerView.setFocusable(false);

    GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3);
    recyclerView.setLayoutManager(gridLayoutManager);

Временное решение:

androidx.recyclerview.widget.GridLayoutManager gridLayout = new androidx.recyclerview.widget.GridLayoutManager(this, 3);

gradle.properties :

android.useAndroidX=true
android.enableJetifier=true
0 голосов
/ 03 марта 2019

Если ваша миграция на AndroidX пытается использовать это.https://developer.android.com/reference/androidx/leanback/widget/VerticalGridView.html

Это как новый вид переработчика для androidX

...