From dce43a90ea90d2dcf26ab154fec3a790aa0cafb1 Mon Sep 17 00:00:00 2001 From: nuclearfog Date: Tue, 27 Dec 2022 23:20:31 +0100 Subject: [PATCH] bug fix, code cleanup --- .../twidda/adapter/OptionsAdapter.java | 16 ++++++-- .../twidda/adapter/holder/MessageHolder.java | 1 + .../adapter/holder/OnHolderClickListener.java | 2 + .../twidda/adapter/holder/Optionholder.java | 41 +++++++++---------- app/src/main/res/layout/item_option.xml | 1 - 5 files changed, 34 insertions(+), 27 deletions(-) diff --git a/app/src/main/java/org/nuclearfog/twidda/adapter/OptionsAdapter.java b/app/src/main/java/org/nuclearfog/twidda/adapter/OptionsAdapter.java index d23235f6..37192bf1 100644 --- a/app/src/main/java/org/nuclearfog/twidda/adapter/OptionsAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/OptionsAdapter.java @@ -5,8 +5,8 @@ import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; +import org.nuclearfog.twidda.adapter.holder.OnHolderClickListener; import org.nuclearfog.twidda.adapter.holder.Optionholder; -import org.nuclearfog.twidda.adapter.holder.Optionholder.OnOptionItemClick; import org.nuclearfog.twidda.database.GlobalSettings; import org.nuclearfog.twidda.model.Account; import org.nuclearfog.twidda.model.Poll; @@ -16,7 +16,7 @@ import org.nuclearfog.twidda.model.Poll; * * @author nuclearfog */ -public class OptionsAdapter extends RecyclerView.Adapter implements OnOptionItemClick { +public class OptionsAdapter extends RecyclerView.Adapter implements OnHolderClickListener { private Poll.Option[] options = {}; private int totalVotes = 1; @@ -59,8 +59,16 @@ public class OptionsAdapter extends RecyclerView.Adapter implement @Override - public void onOptionClick(int pos) { - listener.onOptionClick(pos); + public void onItemClick(int pos, int type, int... extras) { + if (type == OnHolderClickListener.POLL_OPTION) { + listener.onOptionClick(pos); + } + } + + + @Override + public boolean onPlaceholderClick(int position) { + return false; } /** diff --git a/app/src/main/java/org/nuclearfog/twidda/adapter/holder/MessageHolder.java b/app/src/main/java/org/nuclearfog/twidda/adapter/holder/MessageHolder.java index 9e53e30c..03204ec5 100644 --- a/app/src/main/java/org/nuclearfog/twidda/adapter/holder/MessageHolder.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/holder/MessageHolder.java @@ -160,6 +160,7 @@ public class MessageHolder extends ViewHolder implements OnClickListener, OnTagC /** * item click listener + * todo find a replace for this listener class */ public interface OnItemClickListener extends OnHolderClickListener { diff --git a/app/src/main/java/org/nuclearfog/twidda/adapter/holder/OnHolderClickListener.java b/app/src/main/java/org/nuclearfog/twidda/adapter/holder/OnHolderClickListener.java index fcc32af2..f112272a 100644 --- a/app/src/main/java/org/nuclearfog/twidda/adapter/holder/OnHolderClickListener.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/holder/OnHolderClickListener.java @@ -47,6 +47,8 @@ public interface OnHolderClickListener { int POLL_ITEM = 19; + int POLL_OPTION = 20; + /** * called when an item was clicked * diff --git a/app/src/main/java/org/nuclearfog/twidda/adapter/holder/Optionholder.java b/app/src/main/java/org/nuclearfog/twidda/adapter/holder/Optionholder.java index 690ecf3e..04ea350d 100644 --- a/app/src/main/java/org/nuclearfog/twidda/adapter/holder/Optionholder.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/holder/Optionholder.java @@ -3,7 +3,10 @@ package org.nuclearfog.twidda.adapter.holder; import static androidx.recyclerview.widget.RecyclerView.NO_POSITION; import android.view.LayoutInflater; +import android.view.MotionEvent; import android.view.View; +import android.view.View.OnClickListener; +import android.view.View.OnTouchListener; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.SeekBar; @@ -23,14 +26,14 @@ import org.nuclearfog.twidda.model.Poll; * * @author nuclearfog */ -public class Optionholder extends ViewHolder implements View.OnClickListener { +public class Optionholder extends ViewHolder implements OnClickListener, OnTouchListener { - private SeekBar count; + private SeekBar voteProgress; private TextView name, votes; private ImageView checked; @Nullable - private OnOptionItemClick listener; + private OnHolderClickListener listener; private GlobalSettings settings; /** @@ -40,14 +43,15 @@ public class Optionholder extends ViewHolder implements View.OnClickListener { super(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_option, parent, false)); name = itemView.findViewById(R.id.item_option_name); checked = itemView.findViewById(R.id.item_option_voted_icon); - count = itemView.findViewById(R.id.item_option_count_bar); + voteProgress = itemView.findViewById(R.id.item_option_count_bar); votes = itemView.findViewById(R.id.item_option_count_text); name.setTextColor(settings.getFontColor()); votes.setTextColor(settings.getFontColor()); - AppStyles.setSeekBarColor(count, settings); + AppStyles.setSeekBarColor(voteProgress, settings); checked.setOnClickListener(this); + voteProgress.setOnTouchListener(this); this.settings = settings; } @@ -57,15 +61,21 @@ public class Optionholder extends ViewHolder implements View.OnClickListener { int position = getLayoutPosition(); if (position != NO_POSITION && listener != null) { if (v == checked) { - listener.onOptionClick(position); + listener.onItemClick(position, OnHolderClickListener.POLL_OPTION); } } } + + @Override + public boolean onTouch(View v, MotionEvent event) { + return v == voteProgress; + } + /** * set viewholder click listener */ - public void setOnOptionItemClickListener(OnOptionItemClick listener) { + public void setOnOptionItemClickListener(OnHolderClickListener listener) { this.listener = listener; } @@ -80,23 +90,10 @@ public class Optionholder extends ViewHolder implements View.OnClickListener { checked.setImageResource(R.drawable.check); else checked.setImageResource(R.drawable.circle); + voteProgress.setMax(Math.max(totalCount, 1)); AppStyles.setDrawableColor(checked, settings.getIconColor()); name.setText(option.getTitle()); - count.setMax(totalCount); - count.setProgress(option.getVotes()); + voteProgress.setProgress(option.getVotes()); votes.setText(StringTools.NUMBER_FORMAT.format(option.getVotes())); } - - /** - * viewholder click listener - */ - public interface OnOptionItemClick { - - /** - * called on item click - * - * @param pos adapter position of the item - */ - void onOptionClick(int pos); - } } \ No newline at end of file diff --git a/app/src/main/res/layout/item_option.xml b/app/src/main/res/layout/item_option.xml index 75a3155a..f45fdad6 100644 --- a/app/src/main/res/layout/item_option.xml +++ b/app/src/main/res/layout/item_option.xml @@ -36,7 +36,6 @@ android:id="@+id/item_option_voted_icon" android:layout_width="@dimen/item_option_icon_size" android:layout_height="@dimen/item_option_icon_size" - android:src="@drawable/check" android:layout_margin="@dimen/item_option_layout_margin" android:contentDescription="@string/description_poll_vote_icon" />