Прикрепленный заголовок сетки не работает на некоторых версиях Android

Я использую липкий заголовок сетки с ниже зависимостями приложения Gradle.

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')

    compile 'com.android.support:appcompat-v7:25.3.1'
    compile 'com.android.support:design:25.3.1'
    compile 'com.android.support:support-v4:25.3.1'
    compile 'com.tonicartos:stickygridheaders:1.0.1'
    testCompile 'junit:junit:4.12'

}

И построить версию инструмента

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "com.example.stickyheader"
        minSdkVersion 16
        targetSdkVersion 25
        versionCode 8
        versionName '3'
        multiDexEnabled true
    }

 }

Curruntly Использование студии Android 2.2.3. до того, как я обновляю студию Android, она отлично работает для всего устройства, также ниже версии kitkat. В некоторых устройствах В частности, ниже kitkat он падает и выше версии kitkat Code работает отлично.

В приведенной ниже версии устройства kitkat я получил эту ошибку, трассировку стека

04-14 10: 32: 13.520 24869-24869/com.example.stickyheader E/AndroidRuntime: FATAL EXCEPTION: main java.lang.RuntimeException: не удается запустить Activity ComponentInfo {com.example.stickyheader/com.example.stickyheader.CustomerEventDetailActivity }: android.view.InflateException: двоичная строка XML файла # 62: ошибка раздувания класса com.tonicartos.widget.stickygridheaders.StickyGridHeadersGridView на android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2067) на android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2092) на android.app.ActivityThread.access $ 600 (ActivityThread.java:133) на android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1203) на android.os.Handler.dispatchMessage (Обработчик.java: 99) в android.os.Looper.loop(Looper.java:137) в android.app.ActivityThread.main(ActivityThread.java:4794) в java.lang.reflect.Method.invokeNative (собственный метод) в java.lang.reflect.Method.invoke(Method.java:511) в com.android.internal.os.ZygoteInit $ MethodAndArgsC aller.run(ZygoteInit.java:789) в com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556) в dalvik.system.NativeStart.main (собственный метод) Вызывается: android.view.InflateException: Бинарная строка XML файла # 62: ошибка раздувания класса com.tonicartos.widget.stickygridheaders.StickyGridHeadersGridView на android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:698) на android.view.LayoutInflater.rInflate(LayoutInflater.java:746) на android.view.LayoutInflater.inflate(LayoutInflater.java:489) на android.view.LayoutInflater.inflate(LayoutInflater.java:396) на android.view.LayoutInflater.inflate(LayoutInflater.java:352) на android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:288) в android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)

В дополнение Это мой Xml-код для липкого заголовка сетки.

 <com.tonicartos.widget.stickygridheaders.StickyGridHeadersGridView
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/gridViewCustomer"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerHorizontal="true"
        android:animateLayoutChanges="true"
        android:choiceMode="singleChoice"
        android:columnWidth="250dp"
        android:fastScrollEnabled="true"
        android:horizontalSpacing="1dp"
        android:numColumns="auto_fit"
        android:stretchMode="columnWidth"
        android:verticalSpacing="5dp"/>

Похоже, что он даст ошибку из-за версии appCompact, которая не отвечает на зависимостях в build.gradle (я не уверен).

разрешить эту ошибку.

Я также пытаюсь прокомментировать эту зависимость

 compile 'com.android.support:appcompat-v7:25.3.1'

но не работает.

Благодарю вас :)

Ответ 1

Кажется, проблема библиотеки. Кроме того, в стеке, которое вы разместили, нет никакой информации о причине сбоя.
Библиотека, которую вы используете, очень старая и заброшенная. Читайте ReadME.MD.

Таким образом, разработчик этой библиотеки не имеет поддержки, бесполезной для открытия проблемы. вы должны попробовать другое решение. Вы можете попробовать этот RecyclerView или аналогичный с RecyclerView и GridLayoutmanager.

Ответ 2

Похоже, вы используете эту библиотеку: https://github.com/TonicArtos/StickyGridHeaders.

Добавьте к нему зависимости:

dependencies {
   compile "com.tonicartos:stickygridheaders:1.0.1"
}

Ответ 3

Попытайтесь использовать это, это не то, что старое, и должно отлично работать с appcompat

во-первых, добавьте эту зависимость

compile 'com.codewaves.stickyheadergrid:stickyheadergrid:0.9.6'
  1. Внедрение адаптера путем подкласса StickyHeaderGridAdapter
  2. Создайте класс владельца для каждого заголовка и типа элемента. Используйте HeaderViewHolder и ItemViewHolder качестве базовых классов.
  3. Переопределить и внедрить getSectionCount(), getSectionItemCount(int section), onCreateHeaderViewHolder(ViewGroup parent, int headerType), onCreateItemViewHolder(ViewGroup parent, int itemType), onBindHeaderViewHolder(HeaderViewHolder viewHolder, int section), onBindItemViewHolder(ItemViewHolder viewHolder, int section, int offset).
  4. Создайте StickyHeaderGridLayoutManager с требуемым количеством столбцов и назначьте его в RecyclerView.
  5. Используйте только StickyHeaderGridAdapter::notify*

Надеюсь это поможет.