Прикрепленный заголовок сетки не работает на некоторых версиях 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'
- Внедрение адаптера путем подкласса
StickyHeaderGridAdapter
- Создайте класс владельца для каждого заголовка и типа элемента. Используйте
HeaderViewHolder
и ItemViewHolder
качестве базовых классов. - Переопределить и внедрить
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)
. - Создайте
StickyHeaderGridLayoutManager
с требуемым количеством столбцов и назначьте его в RecyclerView
. - Используйте только
StickyHeaderGridAdapter::notify*
Надеюсь это поможет.