From 71f91cd79eac6de97ab9c5ed5c63c7d6ec3259b0 Mon Sep 17 00:00:00 2001 From: FooIbar <118464521+FooIbar@users.noreply.github.com> Date: Wed, 11 Jan 2023 23:54:45 +0800 Subject: [PATCH] Get updated positions in click listeners Resolve #655 --- .../hippo/ehviewer/ui/scene/DownloadsScene.kt | 58 ++++++++++--------- .../ehviewer/ui/scene/GalleryListScene.kt | 36 +++++++----- 2 files changed, 51 insertions(+), 43 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 d471a0123..4780d7fc3 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 @@ -785,7 +785,35 @@ class DownloadsScene : BaseToolbarScene(), DownloadInfoListener, OnClickFabListe private inner class DownloadLabelAdapter(private val mInflater: LayoutInflater) : RecyclerView.Adapter() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): DownloadLabelHolder { - return DownloadLabelHolder(mInflater.inflate(R.layout.item_drawer_list, parent, false)) + val holder = DownloadLabelHolder(mInflater.inflate(R.layout.item_drawer_list, parent, false)) + holder.itemView.setOnClickListener { + val position = holder.bindingAdapterPosition + val label1: String? = if (position == 0) { + null + } else { + mLabels[position] + } + if (!ObjectUtils.equal(label1, mLabel)) { + mLabel = label1 + updateForLabel() + updateView() + closeDrawer(GravityCompat.END) + } + } + holder.edit.setOnClickListener { + val context = context + val label = mLabels[holder.bindingAdapterPosition] + if (context != null) { + val builder = EditTextDialogBuilder( + context, label, getString(R.string.download_labels) + ) + builder.setTitle(R.string.rename_label_title) + builder.setPositiveButton(android.R.string.ok, null) + val dialog = builder.show() + RenameLabelDialogHelper(builder, dialog, label) + } + } + return holder } @SuppressLint("SetTextI18n") @@ -810,32 +838,8 @@ class DownloadsScene : BaseToolbarScene(), DownloadInfoListener, OnClickFabListe } else { holder.label.text = label } - holder.itemView.setOnClickListener { - val label1: String? = if (position == 0) { - null - } else { - mLabels[position] - } - if (!ObjectUtils.equal(label1, mLabel)) { - mLabel = label1 - updateForLabel() - updateView() - closeDrawer(GravityCompat.END) - } - } if (position > 0) { holder.edit.visibility = View.VISIBLE - holder.edit.setOnClickListener { - if (context != null) { - val builder = EditTextDialogBuilder( - context, label, getString(R.string.download_labels) - ) - builder.setTitle(R.string.rename_label_title) - builder.setPositiveButton(android.R.string.ok, null) - val dialog = builder.show() - RenameLabelDialogHelper(builder, dialog, label) - } - } holder.option.visibility = View.VISIBLE } else { holder.edit.visibility = View.GONE @@ -1005,6 +1009,8 @@ class DownloadsScene : BaseToolbarScene(), DownloadInfoListener, OnClickFabListe lp.width = mListThumbWidth lp.height = mListThumbHeight holder.thumb.layoutParams = lp + holder.itemView.setOnClickListener { onItemClick(holder.bindingAdapterPosition) } + holder.itemView.setOnLongClickListener { onItemLongClick(holder.bindingAdapterPosition) } return holder } @@ -1032,8 +1038,6 @@ class DownloadsScene : BaseToolbarScene(), DownloadInfoListener, OnClickFabListe holder.thumb, TransitionNameFactory.getThumbTransitionName(info.gid) ) - holder.itemView.setOnClickListener { onItemClick(position) } - holder.itemView.setOnLongClickListener { onItemLongClick(position) } } override fun getItemCount(): Int { 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 b7f4ad8d3..e9fe92ba9 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 @@ -1146,17 +1146,13 @@ class GalleryListScene : SearchBarScene(), OnDragHandlerListener, SearchLayout.H private inner class QsDrawerAdapter(private val mInflater: LayoutInflater) : RecyclerView.Adapter() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): QsDrawerHolder { - return QsDrawerHolder(mInflater.inflate(R.layout.item_drawer_list, parent, false)) - } - - override fun onBindViewHolder(holder: QsDrawerHolder, position: Int) { + val holder = QsDrawerHolder(mInflater.inflate(R.layout.item_drawer_list, parent, false)) if (!mIsTopList) { - holder.key.text = mQuickSearchList[position].name holder.itemView.setOnClickListener { if (null == mHelper) { return@setOnClickListener } - val q = mQuickSearchList[position] + val q = mQuickSearchList[holder.bindingAdapterPosition] mUrlBuilder.set(q) onUpdateUrlBuilder() val i = q.name!!.lastIndexOf("@") @@ -1166,6 +1162,24 @@ class GalleryListScene : SearchBarScene(), OnDragHandlerListener, SearchLayout.H } } else { val keywords = intArrayOf(11, 12, 13, 15) + holder.itemView.setOnClickListener { + if (null == mHelper) { + return@setOnClickListener + } + mUrlBuilder.keyword = keywords[holder.bindingAdapterPosition].toString() + onUpdateUrlBuilder() + mHelper!!.refresh() + setState(STATE_NORMAL) + closeDrawer(GravityCompat.END) + } + } + return holder + } + + 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, @@ -1174,16 +1188,6 @@ class GalleryListScene : SearchBarScene(), OnDragHandlerListener, SearchLayout.H ) holder.key.text = getString(toplists[position]) holder.option.visibility = View.GONE - holder.itemView.setOnClickListener { - if (null == mHelper) { - return@setOnClickListener - } - mUrlBuilder.keyword = keywords[position].toString() - onUpdateUrlBuilder() - mHelper!!.refresh() - setState(STATE_NORMAL) - closeDrawer(GravityCompat.END) - } } }