Я создаю 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
Если ваша миграция на AndroidX пытается использовать this. https://developer.android.com/reference/androidx/leanback/widget/VerticalGridView.html
Это похоже на новый вид переработчика для androidX
Leanback-зависимости предназначены для приложений на устройствах Android TV.
Я только что исправил эту проблему, проблема в этом случае заключалась в том, как объявлялся GridLayoutManager (решение ниже). Однако это не было постоянным исправлением, поскольку проблема была связана с переходом на 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);
Временное решение:
androidx.recyclerview.widget.GridLayoutManager gridLayout = new androidx.recyclerview.widget.GridLayoutManager(this, 3);
gradle.properties:
android.useAndroidX=true
android.enableJetifier=true
Какой импорт у вас есть для
LayoutManager?