From 595147bacc05f98c8c14d4bef92ff8060ced4071 Mon Sep 17 00:00:00 2001 From: FooIbar <118464521+FooIbar@users.noreply.github.com> Date: Fri, 3 Mar 2023 19:04:36 +0800 Subject: [PATCH] Convert drawer list item to view binding --- .../hippo/ehviewer/ui/scene/DownloadsScene.kt | 43 ++++++++----------- .../ehviewer/ui/scene/GalleryListScene.kt | 38 +++++++--------- app/src/main/res/layout/item_drawer_list.xml | 6 +-- 3 files changed, 37 insertions(+), 50 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.kt b/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.kt index d0d4111c1..552fabbec 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.kt @@ -27,7 +27,6 @@ import android.view.MenuItem import android.view.View import android.view.ViewGroup import android.widget.Button -import android.widget.ImageView import android.widget.TextView import androidx.appcompat.app.AlertDialog import androidx.appcompat.widget.Toolbar @@ -56,6 +55,7 @@ import com.hippo.ehviewer.Settings import com.hippo.ehviewer.client.EhUtils import com.hippo.ehviewer.dao.DownloadInfo import com.hippo.ehviewer.databinding.ItemDownloadBinding +import com.hippo.ehviewer.databinding.ItemDrawerListBinding import com.hippo.ehviewer.download.DownloadManager import com.hippo.ehviewer.download.DownloadManager.DownloadInfoListener import com.hippo.ehviewer.download.DownloadService @@ -675,23 +675,14 @@ class DownloadsScene : BaseToolbarScene(), DownloadInfoListener, OnClickFabListe // TODO } - private class DownloadLabelHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val label: TextView - val edit: ImageView - val option: ImageView - - init { - label = ViewUtils.`$$`(itemView, R.id.tv_key) as TextView - edit = ViewUtils.`$$`(itemView, R.id.iv_edit) as ImageView - option = ViewUtils.`$$`(itemView, R.id.iv_option) as ImageView - } - } + private class DownloadLabelHolder(val binding: ItemDrawerListBinding) : + RecyclerView.ViewHolder(binding.root) private inner class DownloadLabelAdapter(private val mInflater: LayoutInflater) : RecyclerView.Adapter() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): DownloadLabelHolder { val holder = - DownloadLabelHolder(mInflater.inflate(R.layout.item_drawer_list, parent, false)) + DownloadLabelHolder(ItemDrawerListBinding.inflate(mInflater, parent, false)) holder.itemView.setOnClickListener { val position = holder.bindingAdapterPosition val label1: String? = if (position == 0) { @@ -706,7 +697,7 @@ class DownloadsScene : BaseToolbarScene(), DownloadInfoListener, OnClickFabListe closeDrawer(GravityCompat.END) } } - holder.edit.setOnClickListener { + holder.binding.edit.setOnClickListener { val context = context val label = mLabels[holder.bindingAdapterPosition] if (context != null) { @@ -747,17 +738,19 @@ class DownloadsScene : BaseToolbarScene(), DownloadInfoListener, OnClickFabListe } } } - if (list != null) { - holder.label.text = label + " [" + list.size + "]" - } else { - holder.label.text = label - } - if (position < LABEL_OFFSET) { - holder.edit.visibility = View.GONE - holder.option.visibility = View.GONE - } else { - holder.edit.visibility = View.VISIBLE - holder.option.visibility = View.VISIBLE + holder.binding.run { + if (list != null) { + text.text = label + " [" + list.size + "]" + } else { + text.text = label + } + if (position < LABEL_OFFSET) { + edit.visibility = View.GONE + option.visibility = View.GONE + } else { + edit.visibility = View.VISIBLE + option.visibility = View.VISIBLE + } } } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.kt b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.kt index 6ae83cece..5a2d7d23e 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.kt @@ -34,7 +34,6 @@ import android.view.View import android.view.ViewConfiguration import android.view.ViewGroup import android.view.ViewPropertyAnimator -import android.widget.ImageView import android.widget.TextView import androidx.activity.OnBackPressedCallback import androidx.activity.result.PickVisualMediaRequest @@ -86,6 +85,7 @@ import com.hippo.ehviewer.client.parser.GalleryPageUrlParser import com.hippo.ehviewer.dao.DownloadInfo import com.hippo.ehviewer.dao.QuickSearch import com.hippo.ehviewer.databinding.DrawerListRvBinding +import com.hippo.ehviewer.databinding.ItemDrawerListBinding import com.hippo.ehviewer.databinding.SceneGalleryListBinding import com.hippo.ehviewer.download.DownloadManager import com.hippo.ehviewer.download.DownloadManager.DownloadInfoListener @@ -1113,15 +1113,7 @@ class GalleryListScene : SearchBarScene(), OnDragHandlerListener, SearchLayout.H override fun onCancel() {} } - private class QsDrawerHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val key: TextView - val option: ImageView - - init { - key = ViewUtils.`$$`(itemView, R.id.tv_key) as TextView - option = ViewUtils.`$$`(itemView, R.id.iv_option) as ImageView - } - } + private class QsDrawerHolder(val binding: ItemDrawerListBinding) : RecyclerView.ViewHolder(binding.root) private inner class MoveDialogHelper( private val mLabels: Array, @@ -1141,7 +1133,7 @@ class GalleryListScene : SearchBarScene(), OnDragHandlerListener, SearchLayout.H private inner class QsDrawerAdapter(private val mInflater: LayoutInflater) : RecyclerView.Adapter() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): QsDrawerHolder { - val holder = QsDrawerHolder(mInflater.inflate(R.layout.item_drawer_list, parent, false)) + val holder = QsDrawerHolder(ItemDrawerListBinding.inflate(mInflater, parent, false)) if (!mIsTopList) { holder.itemView.setOnClickListener { if (null == mHelper) { @@ -1174,17 +1166,19 @@ class GalleryListScene : SearchBarScene(), OnDragHandlerListener, SearchLayout.H } override fun onBindViewHolder(holder: QsDrawerHolder, position: Int) { - if (!mIsTopList) { - holder.key.text = mQuickSearchList[position].name - } else { - val toplists = intArrayOf( - R.string.toplist_alltime, - R.string.toplist_pastyear, - R.string.toplist_pastmonth, - R.string.toplist_yesterday - ) - holder.key.text = getString(toplists[position]) - holder.option.visibility = View.GONE + holder.binding.run { + if (!mIsTopList) { + text.text = mQuickSearchList[position].name + } else { + val toplists = intArrayOf( + R.string.toplist_alltime, + R.string.toplist_pastyear, + R.string.toplist_pastmonth, + R.string.toplist_yesterday + ) + text.text = getString(toplists[position]) + option.visibility = View.GONE + } } } diff --git a/app/src/main/res/layout/item_drawer_list.xml b/app/src/main/res/layout/item_drawer_list.xml index 9ca1cdf20..36f96d635 100644 --- a/app/src/main/res/layout/item_drawer_list.xml +++ b/app/src/main/res/layout/item_drawer_list.xml @@ -24,7 +24,7 @@ android:orientation="horizontal">