Skip to content

Commit

Permalink
item holder
Browse files Browse the repository at this point in the history
  • Loading branch information
LoxiaLiSA committed Mar 7, 2024
1 parent b46aa0a commit 96bf779
Show file tree
Hide file tree
Showing 17 changed files with 242 additions and 87 deletions.
1 change: 1 addition & 0 deletions annotations/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/build
9 changes: 9 additions & 0 deletions annotations/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
plugins {
id("java-library")
id("org.jetbrains.kotlin.jvm")
}

java {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
8 changes: 8 additions & 0 deletions annotations/src/main/java/ceui/lisa/annotations/ItemHolder.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package ceui.lisa.annotations

import kotlin.reflect.KClass

@Target(AnnotationTarget.CLASS)
@Retention(AnnotationRetention.SOURCE)
@MustBeDocumented
annotation class ItemHolder(val itemHolderCls: KClass<*>)
3 changes: 3 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,9 @@ dependencies {
api 'io.reactivex.rxjava2:rxjava:2.2.21'
api 'io.reactivex.rxjava2:rxandroid:2.1.1'

implementation(project(":annotations")) // 1
implementation(project(":processor")) // 2
kapt(project(":processor")) // 3

implementation 'com.github.bumptech.glide:glide:4.14.2'
kapt 'com.github.bumptech.glide:compiler:4.14.2'
Expand Down
1 change: 0 additions & 1 deletion app/src/main/java/ceui/lisa/activities/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
import ceui.lisa.fragments.FragmentViewPager;
import ceui.lisa.helper.DrawerLayoutHelper;
import ceui.lisa.helper.NavigationLocationHelper;
import ceui.lisa.jetpack.NavActivity;
import ceui.lisa.utils.Common;
import ceui.lisa.utils.Dev;
import ceui.lisa.utils.GlideUtil;
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/java/ceui/loxia/SpaceHolder.kt
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
package ceui.loxia

import ceui.lisa.annotations.ItemHolder
import ceui.lisa.databinding.CellSpaceBinding
import ceui.refactor.ListItemHolder
import ceui.refactor.ListItemViewHolder

class SpaceHolder : ListItemHolder() {
}

@ItemHolder(SpaceHolder::class)
class SpaceViewHolder(private val bd: CellSpaceBinding) : ListItemViewHolder<CellSpaceBinding, SpaceHolder>(bd) {

override fun onBindViewHolder(holder: SpaceHolder, position: Int) {
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/java/ceui/loxia/TextDescHolder.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package ceui.loxia

import ceui.lisa.annotations.ItemHolder
import ceui.lisa.databinding.CellSpaceBinding
import ceui.lisa.databinding.CellTextDescBinding
import ceui.refactor.ListItemHolder
Expand All @@ -8,6 +9,7 @@ import ceui.refactor.ListItemViewHolder
class TextDescHolder(val content: String) : ListItemHolder() {
}

@ItemHolder(TextDescHolder::class)
class TextDescViewHolder(private val bd: CellTextDescBinding) : ListItemViewHolder<CellTextDescBinding, TextDescHolder>(bd) {

override fun onBindViewHolder(holder: TextDescHolder, position: Int) {
Expand Down
3 changes: 3 additions & 0 deletions app/src/main/java/ceui/loxia/flag/FlagReasonRepository.kt
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
package ceui.loxia.flag

import ceui.lisa.R
import ceui.lisa.annotations.ItemHolder
import ceui.lisa.databinding.CellFlagReasonBinding
import ceui.loxia.RefreshState
import ceui.loxia.Repository
import ceui.loxia.findActionReceiverOrNull
import ceui.loxia.findFragmentOrNull
import ceui.loxia.novel.NovelTextHolder
import ceui.refactor.ListItemHolder
import ceui.refactor.ListItemViewHolder
import ceui.refactor.setOnClick
Expand Down Expand Up @@ -52,6 +54,7 @@ class FlagReasonHolder(val id: Int, val content: String, val key: String) : List
}
}

@ItemHolder(FlagReasonHolder::class)
class FlagReasonViewHolder(binding: CellFlagReasonBinding) :
ListItemViewHolder<CellFlagReasonBinding, FlagReasonHolder>(binding) {

Expand Down
4 changes: 4 additions & 0 deletions app/src/main/java/ceui/loxia/novel/NovelTextHolder.kt
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
package ceui.loxia.novel

import ceui.lisa.activities.Shaft
import ceui.lisa.annotations.ItemHolder
import ceui.lisa.databinding.CellNovelImageBinding
import ceui.lisa.databinding.CellNovelTextBinding
import ceui.lisa.models.NovelImages
import ceui.lisa.models.WebNovel
import ceui.lisa.utils.Common
import ceui.lisa.utils.GlideUtil
import ceui.lisa.utils.PixivOperate
import ceui.loxia.SpaceHolder
import ceui.refactor.ListItemHolder
import ceui.refactor.ListItemViewHolder
import ceui.refactor.setOnClick
Expand All @@ -19,6 +21,7 @@ class NovelTextHolder(val text: String, val textColor: Int) : ListItemHolder() {

}

@ItemHolder(NovelTextHolder::class)
class NovelTextViewHolder(private val bd: CellNovelTextBinding) : ListItemViewHolder<CellNovelTextBinding, NovelTextHolder>(bd) {

override fun onBindViewHolder(holder: NovelTextHolder, position: Int) {
Expand All @@ -42,6 +45,7 @@ class NovelImageHolder(
}
}

@ItemHolder(NovelImageHolder::class)
class NovelImageViewHolder(private val bd: CellNovelImageBinding) : ListItemViewHolder<CellNovelImageBinding, NovelImageHolder>(bd) {

override fun onBindViewHolder(holder: NovelImageHolder, position: Int) {
Expand Down
22 changes: 16 additions & 6 deletions app/src/main/java/ceui/refactor/CommonAdapter.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,12 @@ import androidx.lifecycle.LifecycleOwner
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import androidx.viewbinding.ViewBinding
import ceui.lisa.databinding.CellNoneBinding
import ceui.lisa.databinding.FragmentItemAaaaBinding
import ceui.lisa.databinding.FragmentItemBbbbBinding
import ceui.loxia.flag.viewholdermap.ViewHolderFactory
import java.lang.RuntimeException

val listItemHolderDiffUtil = object :
DiffUtil.ItemCallback<ListItemHolder>() {
Expand All @@ -32,22 +35,29 @@ val listItemHolderDiffUtil = object :


class CommonAdapter(private val lifecycleOwner: LifecycleOwner) :
ListAdapter<ListItemHolder, ListItemViewHolder<ViewDataBinding, ListItemHolder>>(
ListAdapter<ListItemHolder, ListItemViewHolder<ViewBinding, ListItemHolder>>(
listItemHolderDiffUtil
) {
override fun onCreateViewHolder(
parent: ViewGroup,
viewType: Int
): ListItemViewHolder<ViewDataBinding, ListItemHolder> {
return ViewHolderMapping.buildViewHolder(parent, viewType)
): ListItemViewHolder<ViewBinding, ListItemHolder> {
val autoGeneratedBuilder = ViewHolderFactory.VIEW_HOLDER_MAP[viewType]
if (autoGeneratedBuilder == null) {
throw RuntimeException("Add ItemHolder annotation")
} else {
return autoGeneratedBuilder.invoke(parent) as ListItemViewHolder<ViewBinding, ListItemHolder>
}
}

override fun onBindViewHolder(
holder: ListItemViewHolder<ViewDataBinding, ListItemHolder>,
holder: ListItemViewHolder<ViewBinding, ListItemHolder>,
position: Int
) {
val item = getItem(position)
holder.binding.lifecycleOwner = lifecycleOwner
if (holder.binding is ViewDataBinding) {
holder.binding.lifecycleOwner = lifecycleOwner
}
holder.binding.root.setOnClick {
item.retrieveListener()(it)
}
Expand Down Expand Up @@ -87,7 +97,7 @@ open class ListItemHolder {
}
}

open class ListItemViewHolder<Binding : ViewDataBinding, T : ListItemHolder>(val binding: Binding) :
open class ListItemViewHolder<Binding : ViewBinding, T : ListItemHolder>(val binding: Binding) :
RecyclerView.ViewHolder(binding.root) {

open fun onBindViewHolder(holder: T, position: Int) {
Expand Down
80 changes: 0 additions & 80 deletions app/src/main/java/ceui/refactor/ViewHolderMapping.kt

This file was deleted.

1 change: 1 addition & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ buildscript {
plugins {
id "com.github.ben-manes.versions" version "0.41.0"
id 'org.jetbrains.kotlin.android' version '1.8.0' apply false
id 'org.jetbrains.kotlin.jvm' version '1.8.0' apply false
}

allprojects {
Expand Down
1 change: 1 addition & 0 deletions processor/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/build
20 changes: 20 additions & 0 deletions processor/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
plugins {
id("java-library")
id("org.jetbrains.kotlin.jvm")
id("kotlin-kapt")
}

java {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}

dependencies {
kapt(project(":annotations"))
compileOnly(project(":annotations"))

kapt ("com.google.auto.service:auto-service:1.0")
implementation ("com.google.auto.service:auto-service:1.0")


}
Loading

0 comments on commit 96bf779

Please sign in to comment.