Ошибка при завышении класса android.support.v7.widget.RecyclerView

Я пытаюсь использовать RecyclerView в своем существующем проекте, строит без ошибок, но не получает ошибку класса для RecyclerView при раздувании. Не могу видеть, что я делаю неправильно. Спасибо за помощь!

//activity_main.xml

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:orientation="vertical">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
</LinearLayout>

//MainActivity.onCreate
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
        ItemData itemsData[] = { new ItemData("Help",R.drawable.visa),
                new ItemData("Delete",R.drawable.sample),
                new ItemData("Cloud",R.drawable.sample),
                new ItemData("Favorite",R.drawable.sample),
                new ItemData("Like",R.drawable.sample),
                new ItemData("Rating",R.drawable.sample)};

        // 2. set layoutManger
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        // 3. create an adapter
        MyAdapter mAdapter = new MyAdapter(itemsData);
        // 4. set adapter
        recyclerView.setAdapter(mAdapter);
        // 5. set item animator to DefaultAnimator
        //recyclerView.setItemAnimator(new DefaultItemAnimator());
        recyclerView.setHasFixedSize(true);
    }

//сборка.градле

apply plugin: 'com.android.application'

android {
    compileSdkVersion 20
    buildToolsVersion '19.1.0'

    defaultConfig {
        applicationId "com.domain.project"
        minSdkVersion 19
        targetSdkVersion 20
        versionCode 1
        versionName "1.0"
    }

    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:support-v4:+'
    compile 'com.android.support:support-v13:+'
    compile project(':facebook-3.15')
    compile project(':parse-1.5.1')
    compile project(':viewpagerindicator-2.4.1')
    compile 'com.github.manuelpeinado.fadingactionbar:fadingactionbar:3.1.2'
    compile 'com.android.support:cardview-v7:+'
    compile 'com.android.support:recyclerview-v7:+'
    compile 'com.google.android.gms:play-services:+'
}

configurations {
    // to avoid double inclusion of support libraries
    all*.exclude group: 'com.android.support', module: 'support-v4'
}

// ЛОГКАТ

08-24 17:49:27.626  27544-27544/com.domain.project E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.domain.project, PID: 27544
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.domain.project/com.domain.project.MainActivity}: android.view.InflateException: Binary XML file line #7: Error inflating class android.support.v7.widget.RecyclerView
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2215)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2264)
            at android.app.ActivityThread.access$800(ActivityThread.java:144)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5139)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: android.view.InflateException: Binary XML file line #7: Error inflating class android.support.v7.widget.RecyclerView
            at android.view.LayoutInflater.createView(LayoutInflater.java:620)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
            at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:343)
            at android.app.Activity.setContentView(Activity.java:1929)
            at com.domain.project.MainActivity.onCreate(MainActivity.java:35)
            at android.app.Activity.performCreate(Activity.java:5231)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2169)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2264)
            at android.app.ActivityThread.access$800(ActivityThread.java:144)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5139)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.reflect.InvocationTargetException
            at java.lang.reflect.Constructor.constructNative(Native Method)
            at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
            at android.view.LayoutInflater.createView(LayoutInflater.java:594)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
            at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:343)
            at android.app.Activity.setContentView(Activity.java:1929)
            at com.domain.project.MainActivity.onCreate(MainActivity.java:35)
            at android.app.Activity.performCreate(Activity.java:5231)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2169)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2264)
            at android.app.ActivityThread.access$800(ActivityThread.java:144)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5139)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NoClassDefFoundError: android.support.v4.util.Pools$SimplePool
            at android.support.v7.widget.RecyclerView.<init>(RecyclerView.java:121)
            at android.support.v7.widget.RecyclerView.<init>(RecyclerView.java:213)
            at java.lang.reflect.Constructor.constructNative(Native Method)
            at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
            at android.view.LayoutInflater.createView(LayoutInflater.java:594)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
            at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:343)
            at android.app.Activity.setContentView(Activity.java:1929)
            at com.domain.project.MainActivity.onCreate(MainActivity.java:35)
            at android.app.Activity.performCreate(Activity.java:5231)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2169)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2264)
            at android.app.ActivityThread.access$800(ActivityThread.java:144)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5139)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)
            at dalvik.system.NativeStart.main(Native Method)

person nomongo    schedule 25.08.2014    source источник
comment
Вот демонстрация RecylerView recyclerviewdemo GitHub, можете ли вы запустить ее правильно?   -  person PrivatMamtora    schedule 25.08.2014
comment
Я попытался создать новый тестовый проект только для тестирования recyclerview, и он работает, но не может понять, почему он не работает при включении в существующий проект. Вот почему я скопировал весь код из layout в build.gradle   -  person nomongo    schedule 25.08.2014
comment
На данный момент recyclerview доступен только для Android-L, если вы не используете обходной путь, чтобы заставить его работать в более старых версиях?   -  person athor    schedule 25.08.2014


Ответы (18)


Или... в моем случае я включил версию RecyclerView для androidx в свои зависимости (build.gradle), но использовал другую в своем XML... Дох.

Заменены

android.support.v7.widget.RecyclerView

с

androidx.recyclerview.widget.RecyclerView

и это сработало! :)

person codingjeremy    schedule 03.05.2019
comment
Это круто! Спасибо +1! - person BlackHatSamurai; 13.06.2019

В объявлении xml RecyclerView: заменить

<android.support.v7.widget.RecyclerView

с

<androidx.recyclerview.widget.RecyclerView

Надеюсь, это сработает ^_^

person Eman Sallam    schedule 24.06.2019
comment
эта работа и для меня. я следую некоторому руководству, в котором все еще используется android.support.v7.widget.RecyclerView, но мой котлин уже использует androidx. Спасибо - person mbdrian; 22.03.2020

Убедитесь, что ваши библиотеки поддержки обновлены до последней версии.

com.android.support:support-v4: и com.android.support:recyclerview-v7

person sreekumar    schedule 04.11.2014
comment
Какое исключение вы получаете?? вы можете поделиться build.gradle ?? - person sreekumar; 15.10.2015
comment
android.view.InflateException: строка двоичного XML-файла № 19: ошибка при раздувании класса android.support.v7.widget.RecyclerView - person Anirudh; 15.10.2015
comment
java.lang.ClassNotFoundException: не удалось найти класс android.support.v7.recyclerview.R$styleable по пути: DexPathList[[zip file /data/app/com.example.merchant-2/base.apk],nativeLibraryDirectories= [/вендор/библиотека, /система/библиотека]] - person Anirudh; 15.10.2015

для новой версии API в build.gradle - зависимости проекта добавляются:

implementation 'androidx.recyclerview:recyclerview:1.0.0'

и в макете вы должны заменить:

android.support.v7.widget.RecyclerView

с

androidx.recyclerview.widget.RecyclerView
person masbayu    schedule 12.12.2019
comment
Обновлено: androidx.recyclerview:recyclerview:1.1.0 - person Aathil Ahamed; 16.11.2020

В вашем файле макета:

Использование:

androidx.recyclerview.widget.RecyclerView

Вместо этого:

android.support.v7.widget.RecyclerView

Это сработает для вас.

Если вы не хотите использовать Androidx, то в вашем файле gradle.properties сделайте следующее:

android.useAndroidX=false

android.enableJetifier=false
person Muazzam A.    schedule 19.09.2019

Моя проблема заключалась в том, что библиотека была скомпилирована с использованием JDK1.6 вместо 1.7.

Решение найдено здесь ссылка

person guy_m    schedule 07.08.2015

Добавьте зависимости в файл gradle.

dependencies{
    compile 'com.android.support:appcompat-v7:23.3.0'
    compile 'com.android.support:recyclerview-v7:23.3.0'
}
person Raj Karekar    schedule 24.05.2016

Просто добавьте следующее в свой proguard-rules.pro,

-keep public class android.support.v7.widget.** { *; }
person Melbourne Lopes    schedule 14.06.2017

Я понял. Удаление следующей конфигурации в build.gradle заставляет recyclerview работать. Это приводит меня к другому вопросу: android studio: ошибка зависимости gradle

--

configurations {
    // to avoid double inclusion of support libraries
    all*.exclude group: 'com.android.support', module: 'support-v4'
}
person nomongo    schedule 25.08.2014

Убедитесь, что вы добавили правильные зависимости для recyclerView. Затем проверьте, есть ли у вас зависимость от cardView.

Если да, то

  • удалить зависимость представления карты

  • синхронизировать проект

  • затем снова добавьте зависимость просмотра карты

  • чистый проект

  • перестроить проект

Это сработало для меня

person VeeyaaR    schedule 03.12.2018

Попробовав все в Интернете, я решил, что recyclerview надувает ошибку, заметив небольшую ошибку. Во-первых, проверили ли вы свою библиотеку android-support-v7-recyclerview.jar в папке libs? если это так, проверьте, соответствует ли ваш файл манифеста целевой версии sdk 21

<uses-sdk
        android:minSdkVersion="11" //or whatever you need
        android:targetSdkVersion="21" />

может быть, это может помочь кому-то в будущем, а не тратить дни на это, как я.

person WonderSoftwares    schedule 23.06.2015
comment
получение этой ошибки Ошибка: (50, 19) ошибка: не удается получить доступ к файлу класса ScrollingView для android.support.v4.view.ScrollingView не найден. Если я добавлю V4, приложение не запустится на устройстве. - person Rohit Mandiwal; 02.08.2015

Посмотрите мой ответ здесь Ошибка при завышении класса RecyclerView. Короче говоря, вам нужно импортировать зависимости recyclerview и appcompat и синхронизировать прежде чем вы попытаетесь добавить RecyclerView в свой XML.

person Ivan V    schedule 08.08.2015

--- Цитата с сайта Android.

Зависимости

Чтобы использовать эти функции в версиях Android до 5.0 (уровень API 21), включите библиотеку поддержки Android v7 в свой проект в качестве зависимости Gradle:

dependencies {
    compile 'com.android.support:appcompat-v7:21.0.+'
    compile 'com.android.support:cardview-v7:21.0.+'
    compile 'com.android.support:recyclerview-v7:21.0.+'
}
person Zephyr    schedule 05.10.2015

Чтобы заставить его работать в Eclipse, в моем случае я добавил RecyclerView в качестве библиотеки в рабочую область. А потом добавил в свой проект под ANDROID LIBRARY. Окончательно. Три часа потеряны.

person Alessandro Mattiuzzi    schedule 28.12.2015

У меня было такое же сообщение об ошибке, и я попробовал многие из предложенных шагов из ответов на этом сайте.

java.lang.RuntimeException: невозможно запустить активность ComponentInfo{com.abc.def/com.abc.def.MainActivity}: android.view.InflateException: строка двоичного файла XML №8:

Наконец понял, что по каким-то причинам тег в моем макете был:

android.support.v7.internal.widget.RecyclerView 

вместо

android.support.v7.widget.RecyclerView. 

Я не уверен, как «внутренний» пробрался между v7 и виджетом, но как только я его удалил, ошибка исчезла. Не говорю, что другие люди совершат ту же ошибку, но просто хочу, чтобы люди знали, что опечатка где-то в вашем макете xml может быть причиной этого сообщения об ошибке.

person a-hegde    schedule 20.04.2016

Проверьте свой файл layout.xml... Не могу перестать смеяться... Я сделал глупую ошибку...

я кладу

<android.support.v7.wodget.RecyclerView

вместо

<android.support.v7.widget.RecyclerView

посмотрите на маленькую букву «о», я потратил 30 минут или больше, чтобы проверить другие файлы ... [с нетерпением жду, когда мой ответ может сэкономить ваше время]

person su shanghai    schedule 01.04.2019

Добавьте строку ниже в файл Gradle:

dependencies {
    //recyclerview
    implementation 'androidx.recyclerview:recyclerview:1.0.0'
}

Добавьте приведенный ниже код в свой макет активности.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"
android:layout_width="match_parent"
android:layout_height="match_parent">

<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/recyclerview"
    android:layout_width="0dp"
    android:layout_height="0dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

Ваша студия Android автоматически импортирует файл androidx recyclerview.

AndroidX — это значительное улучшение оригинальной библиотеки поддержки Android. Как и библиотека поддержки, AndroidX поставляется отдельно от ОС Android и обеспечивает обратную совместимость между версиями Android.

Вот эталон AndroidX: https://developer.android.com/jetpack/androidx

person Prasanth.NVS    schedule 05.10.2019

У меня тоже такое же исключение.

простое решение - добавить layout_behaviour в представление ресайклера:

app:layout_behavior="@string/appbar_scrolling_view_behavior"
person thiru-wta    schedule 04.03.2017