From 61d1058b133164687cce4c39aa0294bc364af113 Mon Sep 17 00:00:00 2001 From: Michael Emelyanov Date: Mon, 8 May 2023 16:55:02 +0300 Subject: [PATCH] Migrate character list feature from databinding module to viewBinding (#121) --- application/binary/build.gradle.kts | 1 - .../ICharacterFavoriteViewModel.kt | 39 ------------- .../fragment_character_favorite_list.xml | 29 ---------- .../layout/list_item_character_favorite.xml | 53 ------------------ .../layout/view_character_favorite_list.xml | 34 ----------- .../view_character_favorite_list_empty.xml | 29 ---------- .../characters/list/databinding/.gitignore | 1 - .../res/layout/fragment_characters_list.xml | 47 ---------------- .../main/res/layout/list_item_character.xml | 56 ------------------- .../src/main/res/layout/list_item_error.xml | 43 -------------- .../src/main/res/layout/list_item_loading.xml | 23 -------- .../main/res/layout/view_characters_list.xml | 29 ---------- .../res/layout/view_characters_list_empty.xml | 30 ---------- .../res/layout/view_characters_list_error.xml | 30 ---------- .../layout/view_characters_list_loading.xml | 27 --------- .../characters/list/impl/build.gradle.kts | 10 ++-- .../list/impl/ui/CharactersListFragment.kt | 35 +++++++++--- .../impl/ui/adapter/CharactersListAdapter.kt | 18 +++--- .../ui/adapter/holders/CharacterViewHolder.kt | 24 +++++--- .../ui/adapter/holders/ErrorViewHolder.kt | 17 ++++-- .../ui/adapter/holders/LoadingViewHolder.kt | 2 +- .../viewbinding}/.gitignore | 0 .../build.gradle.kts | 17 +++--- .../viewbinding/src/main/AndroidManifest.xml | 1 + .../domain/model/ICharactersListViewEvent.kt | 0 .../domain/model/ICharactersListViewModel.kt | 0 .../domain/model/ICharactersListViewState.kt | 0 .../res/layout/fragment_characters_list.xml | 29 ++++++++++ .../main/res/layout/list_item_character.xml | 38 +++++++++++++ .../src/main/res/layout/list_item_error.xml | 31 ++++++++++ .../src/main/res/layout/list_item_loading.xml | 19 +++++++ .../main/res/layout/view_characters_list.xml | 18 ++++++ .../res/layout/view_characters_list_empty.xml | 19 +++++++ .../res/layout/view_characters_list_error.xml | 19 +++++++ .../layout/view_characters_list_loading.xml | 16 ++++++ 35 files changed, 267 insertions(+), 517 deletions(-) delete mode 100644 application/feature/characters/favorite/databinding/src/main/java/com/stepango/blockme/feature/characters/favorite/databinding/presentation/ICharacterFavoriteViewModel.kt delete mode 100644 application/feature/characters/favorite/databinding/src/main/res/layout/fragment_character_favorite_list.xml delete mode 100644 application/feature/characters/favorite/databinding/src/main/res/layout/list_item_character_favorite.xml delete mode 100644 application/feature/characters/favorite/databinding/src/main/res/layout/view_character_favorite_list.xml delete mode 100644 application/feature/characters/favorite/databinding/src/main/res/layout/view_character_favorite_list_empty.xml delete mode 100644 application/feature/characters/list/databinding/.gitignore delete mode 100644 application/feature/characters/list/databinding/src/main/res/layout/fragment_characters_list.xml delete mode 100644 application/feature/characters/list/databinding/src/main/res/layout/list_item_character.xml delete mode 100644 application/feature/characters/list/databinding/src/main/res/layout/list_item_error.xml delete mode 100644 application/feature/characters/list/databinding/src/main/res/layout/list_item_loading.xml delete mode 100644 application/feature/characters/list/databinding/src/main/res/layout/view_characters_list.xml delete mode 100644 application/feature/characters/list/databinding/src/main/res/layout/view_characters_list_empty.xml delete mode 100644 application/feature/characters/list/databinding/src/main/res/layout/view_characters_list_error.xml delete mode 100644 application/feature/characters/list/databinding/src/main/res/layout/view_characters_list_loading.xml rename application/feature/characters/{favorite/databinding => list/viewbinding}/.gitignore (100%) rename application/feature/characters/list/{databinding => viewbinding}/build.gradle.kts (73%) create mode 100644 application/feature/characters/list/viewbinding/src/main/AndroidManifest.xml rename application/feature/characters/list/{databinding => viewbinding}/src/main/java/com/stepango/blockme/feature/characters/list/impl/domain/model/ICharactersListViewEvent.kt (100%) rename application/feature/characters/list/{databinding => viewbinding}/src/main/java/com/stepango/blockme/feature/characters/list/impl/domain/model/ICharactersListViewModel.kt (100%) rename application/feature/characters/list/{databinding => viewbinding}/src/main/java/com/stepango/blockme/feature/characters/list/impl/domain/model/ICharactersListViewState.kt (100%) create mode 100644 application/feature/characters/list/viewbinding/src/main/res/layout/fragment_characters_list.xml create mode 100644 application/feature/characters/list/viewbinding/src/main/res/layout/list_item_character.xml create mode 100644 application/feature/characters/list/viewbinding/src/main/res/layout/list_item_error.xml create mode 100644 application/feature/characters/list/viewbinding/src/main/res/layout/list_item_loading.xml create mode 100644 application/feature/characters/list/viewbinding/src/main/res/layout/view_characters_list.xml create mode 100644 application/feature/characters/list/viewbinding/src/main/res/layout/view_characters_list_empty.xml create mode 100644 application/feature/characters/list/viewbinding/src/main/res/layout/view_characters_list_error.xml create mode 100644 application/feature/characters/list/viewbinding/src/main/res/layout/view_characters_list_loading.xml diff --git a/application/binary/build.gradle.kts b/application/binary/build.gradle.kts index 4e3a5a8a..102e4445 100644 --- a/application/binary/build.gradle.kts +++ b/application/binary/build.gradle.kts @@ -12,7 +12,6 @@ androidBinary( target(":feature:characters:core:impl"), target(":feature:characters:list:api"), target(":feature:characters:list:impl"), - target(":feature:characters:list:databinding"), target(":feature:characters:detail:api"), target(":feature:characters:detail:impl"), target(":feature:characters:favorite:api"), diff --git a/application/feature/characters/favorite/databinding/src/main/java/com/stepango/blockme/feature/characters/favorite/databinding/presentation/ICharacterFavoriteViewModel.kt b/application/feature/characters/favorite/databinding/src/main/java/com/stepango/blockme/feature/characters/favorite/databinding/presentation/ICharacterFavoriteViewModel.kt deleted file mode 100644 index da279e1e..00000000 --- a/application/feature/characters/favorite/databinding/src/main/java/com/stepango/blockme/feature/characters/favorite/databinding/presentation/ICharacterFavoriteViewModel.kt +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2019 vmadalin.com - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.stepango.blockme.feature.characters.favorite.databinding.presentation - -import androidx.lifecycle.LiveData -import com.stepango.blockme.feature.characters.core.api.domain.model.ICharacter - -interface ICharacterFavoriteViewModel { - - val data: LiveData> - - val state: LiveData - - fun loadFavoriteCharacters() - - fun removeFavoriteCharacter(character: ICharacter) -} - -interface ICharacterFavoriteViewState { - - fun isEmpty(): Boolean - - fun isListed(): Boolean -} - diff --git a/application/feature/characters/favorite/databinding/src/main/res/layout/fragment_character_favorite_list.xml b/application/feature/characters/favorite/databinding/src/main/res/layout/fragment_character_favorite_list.xml deleted file mode 100644 index 6abbb008..00000000 --- a/application/feature/characters/favorite/databinding/src/main/res/layout/fragment_character_favorite_list.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/application/feature/characters/favorite/databinding/src/main/res/layout/list_item_character_favorite.xml b/application/feature/characters/favorite/databinding/src/main/res/layout/list_item_character_favorite.xml deleted file mode 100644 index 82a0608d..00000000 --- a/application/feature/characters/favorite/databinding/src/main/res/layout/list_item_character_favorite.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/application/feature/characters/favorite/databinding/src/main/res/layout/view_character_favorite_list.xml b/application/feature/characters/favorite/databinding/src/main/res/layout/view_character_favorite_list.xml deleted file mode 100644 index 83d506ab..00000000 --- a/application/feature/characters/favorite/databinding/src/main/res/layout/view_character_favorite_list.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/application/feature/characters/favorite/databinding/src/main/res/layout/view_character_favorite_list_empty.xml b/application/feature/characters/favorite/databinding/src/main/res/layout/view_character_favorite_list_empty.xml deleted file mode 100644 index 8e3a2a73..00000000 --- a/application/feature/characters/favorite/databinding/src/main/res/layout/view_character_favorite_list_empty.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/application/feature/characters/list/databinding/.gitignore b/application/feature/characters/list/databinding/.gitignore deleted file mode 100644 index 42afabfd..00000000 --- a/application/feature/characters/list/databinding/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build \ No newline at end of file diff --git a/application/feature/characters/list/databinding/src/main/res/layout/fragment_characters_list.xml b/application/feature/characters/list/databinding/src/main/res/layout/fragment_characters_list.xml deleted file mode 100644 index 18077756..00000000 --- a/application/feature/characters/list/databinding/src/main/res/layout/fragment_characters_list.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/application/feature/characters/list/databinding/src/main/res/layout/list_item_character.xml b/application/feature/characters/list/databinding/src/main/res/layout/list_item_character.xml deleted file mode 100644 index 184c8e95..00000000 --- a/application/feature/characters/list/databinding/src/main/res/layout/list_item_character.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/application/feature/characters/list/databinding/src/main/res/layout/list_item_error.xml b/application/feature/characters/list/databinding/src/main/res/layout/list_item_error.xml deleted file mode 100644 index 2f2ae009..00000000 --- a/application/feature/characters/list/databinding/src/main/res/layout/list_item_error.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/application/feature/characters/list/databinding/src/main/res/layout/list_item_loading.xml b/application/feature/characters/list/databinding/src/main/res/layout/list_item_loading.xml deleted file mode 100644 index a9d7c2aa..00000000 --- a/application/feature/characters/list/databinding/src/main/res/layout/list_item_loading.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - diff --git a/application/feature/characters/list/databinding/src/main/res/layout/view_characters_list.xml b/application/feature/characters/list/databinding/src/main/res/layout/view_characters_list.xml deleted file mode 100644 index ff501716..00000000 --- a/application/feature/characters/list/databinding/src/main/res/layout/view_characters_list.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - diff --git a/application/feature/characters/list/databinding/src/main/res/layout/view_characters_list_empty.xml b/application/feature/characters/list/databinding/src/main/res/layout/view_characters_list_empty.xml deleted file mode 100644 index 0da302c5..00000000 --- a/application/feature/characters/list/databinding/src/main/res/layout/view_characters_list_empty.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/application/feature/characters/list/databinding/src/main/res/layout/view_characters_list_error.xml b/application/feature/characters/list/databinding/src/main/res/layout/view_characters_list_error.xml deleted file mode 100644 index 59feba69..00000000 --- a/application/feature/characters/list/databinding/src/main/res/layout/view_characters_list_error.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/application/feature/characters/list/databinding/src/main/res/layout/view_characters_list_loading.xml b/application/feature/characters/list/databinding/src/main/res/layout/view_characters_list_loading.xml deleted file mode 100644 index cdf04c17..00000000 --- a/application/feature/characters/list/databinding/src/main/res/layout/view_characters_list_loading.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/application/feature/characters/list/impl/build.gradle.kts b/application/feature/characters/list/impl/build.gradle.kts index 89cace00..e9eb8b48 100644 --- a/application/feature/characters/list/impl/build.gradle.kts +++ b/application/feature/characters/list/impl/build.gradle.kts @@ -12,12 +12,12 @@ impl( google.material, google.dagger, jakewharton.timber, - kotlinx.coroutines_core - + kotlinx.coroutines_core, + viewbinding.viewpropertydelegate, ) + deps( target(":feature:characters:core:api"), target(":feature:characters:list:api"), - target(":feature:characters:list:databinding"), + target(":feature:characters:list:viewbinding"), target(":core:di:library"), target(":core:theme:android-util"), @@ -27,6 +27,6 @@ impl( target(":common:util"), target(":common:extensions:android-util"), - target(":common:extensions:databinding-adapter") + target(":common:recyclerview:widget") ) -) +) \ No newline at end of file diff --git a/application/feature/characters/list/impl/src/main/java/com/stepango/blockme/feature/characters/list/impl/ui/CharactersListFragment.kt b/application/feature/characters/list/impl/src/main/java/com/stepango/blockme/feature/characters/list/impl/ui/CharactersListFragment.kt index 88ce464d..ac555549 100644 --- a/application/feature/characters/list/impl/src/main/java/com/stepango/blockme/feature/characters/list/impl/ui/CharactersListFragment.kt +++ b/application/feature/characters/list/impl/src/main/java/com/stepango/blockme/feature/characters/list/impl/ui/CharactersListFragment.kt @@ -18,15 +18,18 @@ package com.stepango.blockme.feature.characters.list.impl.ui import android.os.Bundle import android.view.View +import androidx.core.view.isVisible import androidx.navigation.fragment.findNavController import androidx.paging.PagedList +import by.kirich1409.viewbindingdelegate.viewBinding import com.stepango.blockme.common.extensions.android.util.gridLayoutManager import com.stepango.blockme.common.extensions.android.util.observe -import com.stepango.blockme.core.mvvm.library.ui.BaseFragment +import com.stepango.blockme.common.recyclerview.widget.RecyclerViewItemDecoration +import com.stepango.blockme.core.mvvm.library.ui.BaseViewBindingFragment import com.stepango.blockme.core.mvvm.library.viewModels import com.stepango.blockme.feature.characters.core.api.di.CharactersCoreFeatureProvider import com.stepango.blockme.feature.characters.core.api.domain.model.ICharacter -import com.stepango.blockme.feature.characters.list.databinding.databinding.FragmentCharactersListBinding +import com.stepango.blockme.feature.characters.list.viewbinding.databinding.FragmentCharactersListBinding import com.stepango.blockme.feature.characters.list.impl.R import com.stepango.blockme.feature.characters.list.impl.di.DaggerCharactersListComponent import com.stepango.blockme.feature.characters.list.impl.domain.model.ICharactersListViewEvent @@ -34,17 +37,18 @@ import com.stepango.blockme.feature.characters.list.impl.domain.model.ICharacter import com.stepango.blockme.feature.characters.list.impl.ui.adapter.CharactersListAdapter import com.stepango.blockme.feature.characters.list.impl.ui.adapter.CharactersListAdapterState -class CharactersListFragment : - BaseFragment( - layoutId = R.layout.fragment_characters_list - ) { +class CharactersListFragment : BaseViewBindingFragment( + layoutId = R.layout.fragment_characters_list +) { private val viewModel: CharactersListViewModel by viewModels() + private val viewBinding: FragmentCharactersListBinding by viewBinding(FragmentCharactersListBinding::bind) private lateinit var viewAdapter: CharactersListAdapter override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + setupViews() observe(viewModel.state, ::onViewStateChange) observe(viewModel.data, ::onViewDataChange) observe(viewModel.event, ::onViewEvent) @@ -59,11 +63,16 @@ class CharactersListFragment : .inject(this) } - override fun onInitDataBinding() { - viewAdapter = CharactersListAdapter(viewModel) + private fun setupViews() { + viewBinding.swipeRefresh.setOnRefreshListener { viewModel.refreshLoadedCharactersList() } - viewBinding.viewModel = viewModel + viewAdapter = CharactersListAdapter(viewModel) viewBinding.includeList.charactersList.apply { + addItemDecoration( + RecyclerViewItemDecoration( + resources.getDimensionPixelSize(R.dimen.characters_list_item_padding) + ) + ) adapter = viewAdapter gridLayoutManager?.spanSizeLookup = viewAdapter.getSpanSizeLookup() } @@ -74,6 +83,14 @@ class CharactersListFragment : } private fun onViewStateChange(viewState: ICharactersListViewState) { + viewBinding.swipeRefresh.isRefreshing = viewState.isRefreshing() + + viewBinding.includeList.charactersListContainer.isVisible = + viewState.isLoaded() or viewState.isAddLoading() or viewState.isAddError() or viewState.isNoMoreElements() + viewBinding.includeListEmpty.emptyContainer.isVisible = viewState.isEmpty() + viewBinding.includeListError.errorContainer.isVisible = viewState.isError() + viewBinding.includeListLoading.loadingContainer.isVisible = viewState.isLoading() + when (viewState) { is CharactersListViewState.Loaded -> viewAdapter.submitState(CharactersListAdapterState.Added) diff --git a/application/feature/characters/list/impl/src/main/java/com/stepango/blockme/feature/characters/list/impl/ui/adapter/CharactersListAdapter.kt b/application/feature/characters/list/impl/src/main/java/com/stepango/blockme/feature/characters/list/impl/ui/adapter/CharactersListAdapter.kt index c4b2b02e..8ef54533 100644 --- a/application/feature/characters/list/impl/src/main/java/com/stepango/blockme/feature/characters/list/impl/ui/adapter/CharactersListAdapter.kt +++ b/application/feature/characters/list/impl/src/main/java/com/stepango/blockme/feature/characters/list/impl/ui/adapter/CharactersListAdapter.kt @@ -33,7 +33,7 @@ internal enum class ItemView(val type: Int, val span: Int) { ERROR(type = 2, span = 2); companion object { - fun valueOf(type: Int): ItemView? = values().first { it.type == type } + fun valueOf(type: Int): ItemView = values().first { it.type == type } } } @@ -52,9 +52,15 @@ class CharactersListAdapter constructor( viewType: Int ): RecyclerView.ViewHolder = when (ItemView.valueOf(viewType)) { - ItemView.CHARACTER -> CharacterViewHolder(inflater) + ItemView.CHARACTER -> CharacterViewHolder(inflater) { position -> + getItem(position)?.let { + viewModel.openCharacterDetail(it.id) + } + } ItemView.LOADING -> LoadingViewHolder(inflater) - else -> ErrorViewHolder(inflater) + else -> ErrorViewHolder(inflater) { + viewModel.retryAddCharactersList() + } } override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { @@ -62,13 +68,9 @@ class CharactersListAdapter constructor( ItemView.CHARACTER -> getItem(position)?.let { if (holder is CharacterViewHolder) { - holder.bind(viewModel, it) + holder.bind(it) } } - ItemView.ERROR -> - if (holder is ErrorViewHolder) { - holder.bind(viewModel) - } else -> { } } diff --git a/application/feature/characters/list/impl/src/main/java/com/stepango/blockme/feature/characters/list/impl/ui/adapter/holders/CharacterViewHolder.kt b/application/feature/characters/list/impl/src/main/java/com/stepango/blockme/feature/characters/list/impl/ui/adapter/holders/CharacterViewHolder.kt index 9d894c65..0c19d6fb 100644 --- a/application/feature/characters/list/impl/src/main/java/com/stepango/blockme/feature/characters/list/impl/ui/adapter/holders/CharacterViewHolder.kt +++ b/application/feature/characters/list/impl/src/main/java/com/stepango/blockme/feature/characters/list/impl/ui/adapter/holders/CharacterViewHolder.kt @@ -17,20 +17,30 @@ package com.stepango.blockme.feature.characters.list.impl.ui.adapter.holders import android.view.LayoutInflater +import androidx.recyclerview.widget.RecyclerView +import com.stepango.blockme.common.extensions.android.util.loadImage import com.stepango.blockme.core.mvvm.library.ui.BaseViewHolder -import com.stepango.blockme.feature.characters.list.databinding.databinding.ListItemCharacterBinding +import com.stepango.blockme.feature.characters.list.viewbinding.databinding.ListItemCharacterBinding import com.stepango.blockme.feature.characters.core.api.domain.model.ICharacter -import com.stepango.blockme.feature.characters.list.impl.ui.CharactersListViewModel class CharacterViewHolder( - inflater: LayoutInflater + inflater: LayoutInflater, + private val itemClickListener: (Int) -> Unit ) : BaseViewHolder( binding = ListItemCharacterBinding.inflate(inflater) ) { - fun bind(viewModel: CharactersListViewModel, item: ICharacter) { - binding.viewModel = viewModel - binding.character = item - binding.executePendingBindings() + init { + binding.root.setOnClickListener { + val position = adapterPosition + if (position != RecyclerView.NO_POSITION) { + itemClickListener(position) + } + } + } + + fun bind(item: ICharacter) { + binding.characterImage.loadImage(item.imageUrl) + binding.characterName.text = item.name } } diff --git a/application/feature/characters/list/impl/src/main/java/com/stepango/blockme/feature/characters/list/impl/ui/adapter/holders/ErrorViewHolder.kt b/application/feature/characters/list/impl/src/main/java/com/stepango/blockme/feature/characters/list/impl/ui/adapter/holders/ErrorViewHolder.kt index f65fb9c0..6f08ac14 100644 --- a/application/feature/characters/list/impl/src/main/java/com/stepango/blockme/feature/characters/list/impl/ui/adapter/holders/ErrorViewHolder.kt +++ b/application/feature/characters/list/impl/src/main/java/com/stepango/blockme/feature/characters/list/impl/ui/adapter/holders/ErrorViewHolder.kt @@ -17,18 +17,23 @@ package com.stepango.blockme.feature.characters.list.impl.ui.adapter.holders import android.view.LayoutInflater +import androidx.recyclerview.widget.RecyclerView import com.stepango.blockme.core.mvvm.library.ui.BaseViewHolder -import com.stepango.blockme.feature.characters.list.databinding.databinding.ListItemErrorBinding -import com.stepango.blockme.feature.characters.list.impl.ui.CharactersListViewModel +import com.stepango.blockme.feature.characters.list.viewbinding.databinding.ListItemErrorBinding class ErrorViewHolder( - inflater: LayoutInflater + inflater: LayoutInflater, + private val onRetryButtonClickListener: () -> Unit ) : BaseViewHolder( binding = ListItemErrorBinding.inflate(inflater) ) { - fun bind(viewModel: CharactersListViewModel) { - binding.viewModel = viewModel - binding.executePendingBindings() + init { + binding.retryButton.setOnClickListener { + val position = adapterPosition + if (position != RecyclerView.NO_POSITION) { + onRetryButtonClickListener() + } + } } } diff --git a/application/feature/characters/list/impl/src/main/java/com/stepango/blockme/feature/characters/list/impl/ui/adapter/holders/LoadingViewHolder.kt b/application/feature/characters/list/impl/src/main/java/com/stepango/blockme/feature/characters/list/impl/ui/adapter/holders/LoadingViewHolder.kt index d9b708ee..bfe7d1c6 100644 --- a/application/feature/characters/list/impl/src/main/java/com/stepango/blockme/feature/characters/list/impl/ui/adapter/holders/LoadingViewHolder.kt +++ b/application/feature/characters/list/impl/src/main/java/com/stepango/blockme/feature/characters/list/impl/ui/adapter/holders/LoadingViewHolder.kt @@ -18,7 +18,7 @@ package com.stepango.blockme.feature.characters.list.impl.ui.adapter.holders import android.view.LayoutInflater import com.stepango.blockme.core.mvvm.library.ui.BaseViewHolder -import com.stepango.blockme.feature.characters.list.databinding.databinding.ListItemLoadingBinding +import com.stepango.blockme.feature.characters.list.viewbinding.databinding.ListItemLoadingBinding class LoadingViewHolder( inflater: LayoutInflater diff --git a/application/feature/characters/favorite/databinding/.gitignore b/application/feature/characters/list/viewbinding/.gitignore similarity index 100% rename from application/feature/characters/favorite/databinding/.gitignore rename to application/feature/characters/list/viewbinding/.gitignore diff --git a/application/feature/characters/list/databinding/build.gradle.kts b/application/feature/characters/list/viewbinding/build.gradle.kts similarity index 73% rename from application/feature/characters/list/databinding/build.gradle.kts rename to application/feature/characters/list/viewbinding/build.gradle.kts index 7ed5b5a9..f51a22a6 100644 --- a/application/feature/characters/list/databinding/build.gradle.kts +++ b/application/feature/characters/list/viewbinding/build.gradle.kts @@ -1,20 +1,17 @@ -dataBinding( - packageName = "com.stepango.blockme.feature.characters.list.databinding", +viewBinding( + packageName = "com.stepango.blockme.feature.characters.list.viewbinding", dependencies = deps( + google.material, androidx.appcompat, androidx.constraintlayout, androidx.paging, - google.material ) + deps( - - target(":core:theme:res"), - target(":core:network:library"), - target(":core:mvvm:library"), target(":feature:characters:core:api"), target(":feature:characters:list:api"), target(":feature:characters:list:res"), - target(":common:extensions:android-util"), - target(":common:extensions:databinding-adapter") + target(":core:theme:res"), + target(":core:network:library"), + target(":core:mvvm:library"), ) -) +) \ No newline at end of file diff --git a/application/feature/characters/list/viewbinding/src/main/AndroidManifest.xml b/application/feature/characters/list/viewbinding/src/main/AndroidManifest.xml new file mode 100644 index 00000000..3dfb1dff --- /dev/null +++ b/application/feature/characters/list/viewbinding/src/main/AndroidManifest.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/application/feature/characters/list/databinding/src/main/java/com/stepango/blockme/feature/characters/list/impl/domain/model/ICharactersListViewEvent.kt b/application/feature/characters/list/viewbinding/src/main/java/com/stepango/blockme/feature/characters/list/impl/domain/model/ICharactersListViewEvent.kt similarity index 100% rename from application/feature/characters/list/databinding/src/main/java/com/stepango/blockme/feature/characters/list/impl/domain/model/ICharactersListViewEvent.kt rename to application/feature/characters/list/viewbinding/src/main/java/com/stepango/blockme/feature/characters/list/impl/domain/model/ICharactersListViewEvent.kt diff --git a/application/feature/characters/list/databinding/src/main/java/com/stepango/blockme/feature/characters/list/impl/domain/model/ICharactersListViewModel.kt b/application/feature/characters/list/viewbinding/src/main/java/com/stepango/blockme/feature/characters/list/impl/domain/model/ICharactersListViewModel.kt similarity index 100% rename from application/feature/characters/list/databinding/src/main/java/com/stepango/blockme/feature/characters/list/impl/domain/model/ICharactersListViewModel.kt rename to application/feature/characters/list/viewbinding/src/main/java/com/stepango/blockme/feature/characters/list/impl/domain/model/ICharactersListViewModel.kt diff --git a/application/feature/characters/list/databinding/src/main/java/com/stepango/blockme/feature/characters/list/impl/domain/model/ICharactersListViewState.kt b/application/feature/characters/list/viewbinding/src/main/java/com/stepango/blockme/feature/characters/list/impl/domain/model/ICharactersListViewState.kt similarity index 100% rename from application/feature/characters/list/databinding/src/main/java/com/stepango/blockme/feature/characters/list/impl/domain/model/ICharactersListViewState.kt rename to application/feature/characters/list/viewbinding/src/main/java/com/stepango/blockme/feature/characters/list/impl/domain/model/ICharactersListViewState.kt diff --git a/application/feature/characters/list/viewbinding/src/main/res/layout/fragment_characters_list.xml b/application/feature/characters/list/viewbinding/src/main/res/layout/fragment_characters_list.xml new file mode 100644 index 00000000..bc0bffde --- /dev/null +++ b/application/feature/characters/list/viewbinding/src/main/res/layout/fragment_characters_list.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + diff --git a/application/feature/characters/list/viewbinding/src/main/res/layout/list_item_character.xml b/application/feature/characters/list/viewbinding/src/main/res/layout/list_item_character.xml new file mode 100644 index 00000000..5f462bb1 --- /dev/null +++ b/application/feature/characters/list/viewbinding/src/main/res/layout/list_item_character.xml @@ -0,0 +1,38 @@ + + + + + + + + + + diff --git a/application/feature/characters/list/viewbinding/src/main/res/layout/list_item_error.xml b/application/feature/characters/list/viewbinding/src/main/res/layout/list_item_error.xml new file mode 100644 index 00000000..d9b54b5b --- /dev/null +++ b/application/feature/characters/list/viewbinding/src/main/res/layout/list_item_error.xml @@ -0,0 +1,31 @@ + + + + + + + + diff --git a/application/feature/characters/list/viewbinding/src/main/res/layout/list_item_loading.xml b/application/feature/characters/list/viewbinding/src/main/res/layout/list_item_loading.xml new file mode 100644 index 00000000..b8f39864 --- /dev/null +++ b/application/feature/characters/list/viewbinding/src/main/res/layout/list_item_loading.xml @@ -0,0 +1,19 @@ + + + + + + diff --git a/application/feature/characters/list/viewbinding/src/main/res/layout/view_characters_list.xml b/application/feature/characters/list/viewbinding/src/main/res/layout/view_characters_list.xml new file mode 100644 index 00000000..88737c12 --- /dev/null +++ b/application/feature/characters/list/viewbinding/src/main/res/layout/view_characters_list.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/application/feature/characters/list/viewbinding/src/main/res/layout/view_characters_list_empty.xml b/application/feature/characters/list/viewbinding/src/main/res/layout/view_characters_list_empty.xml new file mode 100644 index 00000000..3333e1ee --- /dev/null +++ b/application/feature/characters/list/viewbinding/src/main/res/layout/view_characters_list_empty.xml @@ -0,0 +1,19 @@ + + + + + + diff --git a/application/feature/characters/list/viewbinding/src/main/res/layout/view_characters_list_error.xml b/application/feature/characters/list/viewbinding/src/main/res/layout/view_characters_list_error.xml new file mode 100644 index 00000000..99312184 --- /dev/null +++ b/application/feature/characters/list/viewbinding/src/main/res/layout/view_characters_list_error.xml @@ -0,0 +1,19 @@ + + + + + + diff --git a/application/feature/characters/list/viewbinding/src/main/res/layout/view_characters_list_loading.xml b/application/feature/characters/list/viewbinding/src/main/res/layout/view_characters_list_loading.xml new file mode 100644 index 00000000..74f086c0 --- /dev/null +++ b/application/feature/characters/list/viewbinding/src/main/res/layout/view_characters_list_loading.xml @@ -0,0 +1,16 @@ + + + + + +