diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostFilterPreferenceActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostFilterPreferenceActivity.java index a8e49ae0..09ba5f0a 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostFilterPreferenceActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostFilterPreferenceActivity.java @@ -3,7 +3,6 @@ package ml.docilealligator.infinityforreddit.activities; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; -import android.util.Log; import android.view.MenuItem; import androidx.annotation.NonNull; @@ -29,7 +28,7 @@ import butterknife.ButterKnife; import ml.docilealligator.infinityforreddit.Infinity; import ml.docilealligator.infinityforreddit.R; import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase; -import ml.docilealligator.infinityforreddit.adapters.PostFilterRecyclerViewAdapter; +import ml.docilealligator.infinityforreddit.adapters.PostFilterWithUsageRecyclerViewAdapter; import ml.docilealligator.infinityforreddit.bottomsheetfragments.PostFilterOptionsBottomSheetFragment; import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper; import ml.docilealligator.infinityforreddit.post.Post; @@ -66,7 +65,7 @@ public class PostFilterPreferenceActivity extends BaseActivity { @Inject Executor executor; public PostFilterWithUsageViewModel postFilterWithUsageViewModel; - private PostFilterRecyclerViewAdapter adapter; + private PostFilterWithUsageRecyclerViewAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { @@ -102,7 +101,7 @@ public class PostFilterPreferenceActivity extends BaseActivity { } }); - adapter = new PostFilterRecyclerViewAdapter(this, customThemeWrapper, postFilter -> { + adapter = new PostFilterWithUsageRecyclerViewAdapter(this, customThemeWrapper, postFilter -> { if (post != null) { showPostFilterOptions(post, postFilter); } else if (subredditName != null) { diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/PostFilterRecyclerViewAdapter.java b/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/PostFilterWithUsageRecyclerViewAdapter.java similarity index 70% rename from app/src/main/java/ml/docilealligator/infinityforreddit/adapters/PostFilterRecyclerViewAdapter.java rename to app/src/main/java/ml/docilealligator/infinityforreddit/adapters/PostFilterWithUsageRecyclerViewAdapter.java index f15c269c..73194143 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/PostFilterRecyclerViewAdapter.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/PostFilterWithUsageRecyclerViewAdapter.java @@ -12,13 +12,15 @@ import java.util.List; import ml.docilealligator.infinityforreddit.R; import ml.docilealligator.infinityforreddit.activities.BaseActivity; +import ml.docilealligator.infinityforreddit.adapters.navigationdrawer.PostFilterUsageEmbeddedRecyclerViewAdapter; import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper; -import ml.docilealligator.infinityforreddit.databinding.ItemPostFilterBinding; +import ml.docilealligator.infinityforreddit.customviews.LinearLayoutManagerBugFixed; +import ml.docilealligator.infinityforreddit.databinding.ItemPostFilterWithUsageBinding; import ml.docilealligator.infinityforreddit.postfilter.PostFilter; import ml.docilealligator.infinityforreddit.postfilter.PostFilterWithUsage; import ml.docilealligator.infinityforreddit.utils.Utils; -public class PostFilterRecyclerViewAdapter extends RecyclerView.Adapter { +public class PostFilterWithUsageRecyclerViewAdapter extends RecyclerView.Adapter { private static final int VIEW_TYPE_HEADER = 1; private static final int VIEW_TYPE_POST_FILTER = 2; @@ -27,15 +29,17 @@ public class PostFilterRecyclerViewAdapter extends RecyclerView.Adapter postFilterWithUsageList; + private RecyclerView.RecycledViewPool recycledViewPool; public interface OnItemClickListener { void onItemClick(PostFilter postFilter); } - public PostFilterRecyclerViewAdapter(BaseActivity activity, CustomThemeWrapper customThemeWrapper, - OnItemClickListener onItemClickListener) { + public PostFilterWithUsageRecyclerViewAdapter(BaseActivity activity, CustomThemeWrapper customThemeWrapper, + OnItemClickListener onItemClickListener) { this.activity = activity; this.customThemeWrapper = customThemeWrapper; + this.recycledViewPool = new RecyclerView.RecycledViewPool(); this.onItemClickListener = onItemClickListener; } @@ -53,7 +57,7 @@ public class PostFilterRecyclerViewAdapter extends RecyclerView.Adapter { onItemClickListener.onItemClick(postFilterWithUsageList.get(getBindingAdapterPosition() - 1).postFilter); }); + + binding.postFilterUsageRecyclerViewItemPostFilter.setRecycledViewPool(recycledViewPool); + binding.postFilterUsageRecyclerViewItemPostFilter.setLayoutManager(new LinearLayoutManagerBugFixed(activity)); + adapter = new PostFilterUsageEmbeddedRecyclerViewAdapter(activity); + binding.postFilterUsageRecyclerViewItemPostFilter.setAdapter(adapter); } } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/navigationdrawer/PostFilterUsageEmbeddedRecyclerViewAdapter.java b/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/navigationdrawer/PostFilterUsageEmbeddedRecyclerViewAdapter.java new file mode 100644 index 00000000..51c3fc76 --- /dev/null +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/navigationdrawer/PostFilterUsageEmbeddedRecyclerViewAdapter.java @@ -0,0 +1,65 @@ +package ml.docilealligator.infinityforreddit.adapters.navigationdrawer; + +import android.view.LayoutInflater; +import android.view.ViewGroup; +import android.widget.TextView; +import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import java.util.List; + +import ml.docilealligator.infinityforreddit.R; +import ml.docilealligator.infinityforreddit.activities.BaseActivity; +import ml.docilealligator.infinityforreddit.databinding.ItemPostFilterUsageEmbeddedBinding; +import ml.docilealligator.infinityforreddit.postfilter.PostFilterUsage; + +public class PostFilterUsageEmbeddedRecyclerViewAdapter extends RecyclerView.Adapter { + + private BaseActivity baseActivity; + private List postFilterUsageList; + + public PostFilterUsageEmbeddedRecyclerViewAdapter(BaseActivity baseActivity) { + this.baseActivity = baseActivity; + } + + @NonNull + @Override + public EntryViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + return new EntryViewHolder(ItemPostFilterUsageEmbeddedBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false)); + } + + @Override + public void onBindViewHolder(@NonNull EntryViewHolder holder, int position) { + if (postFilterUsageList == null || postFilterUsageList.isEmpty()) { + holder.textView.setText(R.string.click_to_apply_post_filter); + } else if (holder.getBindingAdapterPosition() > 4) { + holder.textView.setText(baseActivity.getString(R.string.post_filter_usage_embedded_more_count, postFilterUsageList.size() - 5)); + } else { + holder.textView.setText(postFilterUsageList.get(holder.getBindingAdapterPosition()).nameOfUsage); + } + } + + @Override + public int getItemCount() { + return postFilterUsageList == null || postFilterUsageList.isEmpty() ? 1 : (postFilterUsageList.size() > 5 ? 6 : postFilterUsageList.size()); + } + + public void setPostFilterUsageList(List postFilterUsageList) { + this.postFilterUsageList = postFilterUsageList; + notifyDataSetChanged(); + } + + class EntryViewHolder extends RecyclerView.ViewHolder { + TextView textView; + + public EntryViewHolder(@NonNull ItemPostFilterUsageEmbeddedBinding binding) { + super(binding.getRoot()); + this.textView = binding.getRoot(); + textView.setOnClickListener(view -> { + Toast.makeText(baseActivity, textView.getText(), Toast.LENGTH_SHORT).show(); + }); + } + } +} diff --git a/app/src/main/res/layout/item_post_filter_usage_embedded.xml b/app/src/main/res/layout/item_post_filter_usage_embedded.xml new file mode 100644 index 00000000..bfec3dbb --- /dev/null +++ b/app/src/main/res/layout/item_post_filter_usage_embedded.xml @@ -0,0 +1,8 @@ + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_post_filter.xml b/app/src/main/res/layout/item_post_filter_with_usage.xml similarity index 74% rename from app/src/main/res/layout/item_post_filter.xml rename to app/src/main/res/layout/item_post_filter_with_usage.xml index 8487e105..8a083caa 100644 --- a/app/src/main/res/layout/item_post_filter.xml +++ b/app/src/main/res/layout/item_post_filter_with_usage.xml @@ -25,10 +25,13 @@ android:paddingEnd="16dp" android:textColor="?attr/primaryTextColor" android:textSize="?attr/font_16" - android:fontFamily="?attr/font_family" - android:clickable="true" - android:focusable="true" - android:background="?attr/selectableItemBackground" /> + android:fontFamily="?attr/font_family" /> + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c6e755e8..44534471 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1372,4 +1372,7 @@ Otherwise, Infinity may not load posts at all. Sorry for the inconvenience. I understand + Click here to apply it to some post feeds + and %1$d more +