mirror of
https://github.com/Docile-Alligator/Infinity-For-Reddit
synced 2024-07-09 04:16:16 +00:00
Continue implementing showing post filter usages in PostFilterPreferenceActivity.
This commit is contained in:
parent
06092c73d4
commit
70c2d571ce
|
@ -3,7 +3,6 @@ package ml.docilealligator.infinityforreddit.activities;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.util.Log;
|
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
@ -29,7 +28,7 @@ import butterknife.ButterKnife;
|
||||||
import ml.docilealligator.infinityforreddit.Infinity;
|
import ml.docilealligator.infinityforreddit.Infinity;
|
||||||
import ml.docilealligator.infinityforreddit.R;
|
import ml.docilealligator.infinityforreddit.R;
|
||||||
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
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.bottomsheetfragments.PostFilterOptionsBottomSheetFragment;
|
||||||
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
|
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
|
||||||
import ml.docilealligator.infinityforreddit.post.Post;
|
import ml.docilealligator.infinityforreddit.post.Post;
|
||||||
|
@ -66,7 +65,7 @@ public class PostFilterPreferenceActivity extends BaseActivity {
|
||||||
@Inject
|
@Inject
|
||||||
Executor executor;
|
Executor executor;
|
||||||
public PostFilterWithUsageViewModel postFilterWithUsageViewModel;
|
public PostFilterWithUsageViewModel postFilterWithUsageViewModel;
|
||||||
private PostFilterRecyclerViewAdapter adapter;
|
private PostFilterWithUsageRecyclerViewAdapter adapter;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
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) {
|
if (post != null) {
|
||||||
showPostFilterOptions(post, postFilter);
|
showPostFilterOptions(post, postFilter);
|
||||||
} else if (subredditName != null) {
|
} else if (subredditName != null) {
|
||||||
|
|
|
@ -12,13 +12,15 @@ import java.util.List;
|
||||||
|
|
||||||
import ml.docilealligator.infinityforreddit.R;
|
import ml.docilealligator.infinityforreddit.R;
|
||||||
import ml.docilealligator.infinityforreddit.activities.BaseActivity;
|
import ml.docilealligator.infinityforreddit.activities.BaseActivity;
|
||||||
|
import ml.docilealligator.infinityforreddit.adapters.navigationdrawer.PostFilterUsageEmbeddedRecyclerViewAdapter;
|
||||||
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
|
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.PostFilter;
|
||||||
import ml.docilealligator.infinityforreddit.postfilter.PostFilterWithUsage;
|
import ml.docilealligator.infinityforreddit.postfilter.PostFilterWithUsage;
|
||||||
import ml.docilealligator.infinityforreddit.utils.Utils;
|
import ml.docilealligator.infinityforreddit.utils.Utils;
|
||||||
|
|
||||||
public class PostFilterRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
public class PostFilterWithUsageRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
||||||
|
|
||||||
private static final int VIEW_TYPE_HEADER = 1;
|
private static final int VIEW_TYPE_HEADER = 1;
|
||||||
private static final int VIEW_TYPE_POST_FILTER = 2;
|
private static final int VIEW_TYPE_POST_FILTER = 2;
|
||||||
|
@ -27,15 +29,17 @@ public class PostFilterRecyclerViewAdapter extends RecyclerView.Adapter<Recycler
|
||||||
private CustomThemeWrapper customThemeWrapper;
|
private CustomThemeWrapper customThemeWrapper;
|
||||||
private final OnItemClickListener onItemClickListener;
|
private final OnItemClickListener onItemClickListener;
|
||||||
private List<PostFilterWithUsage> postFilterWithUsageList;
|
private List<PostFilterWithUsage> postFilterWithUsageList;
|
||||||
|
private RecyclerView.RecycledViewPool recycledViewPool;
|
||||||
|
|
||||||
public interface OnItemClickListener {
|
public interface OnItemClickListener {
|
||||||
void onItemClick(PostFilter postFilter);
|
void onItemClick(PostFilter postFilter);
|
||||||
}
|
}
|
||||||
|
|
||||||
public PostFilterRecyclerViewAdapter(BaseActivity activity, CustomThemeWrapper customThemeWrapper,
|
public PostFilterWithUsageRecyclerViewAdapter(BaseActivity activity, CustomThemeWrapper customThemeWrapper,
|
||||||
OnItemClickListener onItemClickListener) {
|
OnItemClickListener onItemClickListener) {
|
||||||
this.activity = activity;
|
this.activity = activity;
|
||||||
this.customThemeWrapper = customThemeWrapper;
|
this.customThemeWrapper = customThemeWrapper;
|
||||||
|
this.recycledViewPool = new RecyclerView.RecycledViewPool();
|
||||||
this.onItemClickListener = onItemClickListener;
|
this.onItemClickListener = onItemClickListener;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,7 +57,7 @@ public class PostFilterRecyclerViewAdapter extends RecyclerView.Adapter<Recycler
|
||||||
if (viewType == VIEW_TYPE_HEADER) {
|
if (viewType == VIEW_TYPE_HEADER) {
|
||||||
return new HeaderViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_filter_fragment_header, parent, false));
|
return new HeaderViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_filter_fragment_header, parent, false));
|
||||||
} else {
|
} else {
|
||||||
return new PostFilterViewHolder(ItemPostFilterBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
|
return new PostFilterViewHolder(ItemPostFilterWithUsageBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -61,6 +65,7 @@ public class PostFilterRecyclerViewAdapter extends RecyclerView.Adapter<Recycler
|
||||||
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
|
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
|
||||||
if (holder instanceof PostFilterViewHolder) {
|
if (holder instanceof PostFilterViewHolder) {
|
||||||
((PostFilterViewHolder) holder).binding.postFilterNameTextViewItemPostFilter.setText(postFilterWithUsageList.get(position - 1).postFilter.name);
|
((PostFilterViewHolder) holder).binding.postFilterNameTextViewItemPostFilter.setText(postFilterWithUsageList.get(position - 1).postFilter.name);
|
||||||
|
((PostFilterViewHolder) holder).adapter.setPostFilterUsageList(postFilterWithUsageList.get(position - 1).postFilterUsages);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -75,9 +80,10 @@ public class PostFilterRecyclerViewAdapter extends RecyclerView.Adapter<Recycler
|
||||||
}
|
}
|
||||||
|
|
||||||
private class PostFilterViewHolder extends RecyclerView.ViewHolder {
|
private class PostFilterViewHolder extends RecyclerView.ViewHolder {
|
||||||
ItemPostFilterBinding binding;
|
ItemPostFilterWithUsageBinding binding;
|
||||||
|
PostFilterUsageEmbeddedRecyclerViewAdapter adapter;
|
||||||
|
|
||||||
public PostFilterViewHolder(@NonNull ItemPostFilterBinding binding) {
|
public PostFilterViewHolder(@NonNull ItemPostFilterWithUsageBinding binding) {
|
||||||
super(binding.getRoot());
|
super(binding.getRoot());
|
||||||
this.binding = binding;
|
this.binding = binding;
|
||||||
binding.postFilterNameTextViewItemPostFilter.setTextColor(customThemeWrapper.getPrimaryTextColor());
|
binding.postFilterNameTextViewItemPostFilter.setTextColor(customThemeWrapper.getPrimaryTextColor());
|
||||||
|
@ -89,6 +95,11 @@ public class PostFilterRecyclerViewAdapter extends RecyclerView.Adapter<Recycler
|
||||||
binding.getRoot().setOnClickListener(view -> {
|
binding.getRoot().setOnClickListener(view -> {
|
||||||
onItemClickListener.onItemClick(postFilterWithUsageList.get(getBindingAdapterPosition() - 1).postFilter);
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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<PostFilterUsageEmbeddedRecyclerViewAdapter.EntryViewHolder> {
|
||||||
|
|
||||||
|
private BaseActivity baseActivity;
|
||||||
|
private List<PostFilterUsage> 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<PostFilterUsage> 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();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:padding="16dp"
|
||||||
|
android:textColor="?attr/primaryTextColor"
|
||||||
|
android:textSize="?attr/font_default"
|
||||||
|
android:fontFamily="?attr/font_family" />
|
|
@ -25,10 +25,13 @@
|
||||||
android:paddingEnd="16dp"
|
android:paddingEnd="16dp"
|
||||||
android:textColor="?attr/primaryTextColor"
|
android:textColor="?attr/primaryTextColor"
|
||||||
android:textSize="?attr/font_16"
|
android:textSize="?attr/font_16"
|
||||||
android:fontFamily="?attr/font_family"
|
android:fontFamily="?attr/font_family" />
|
||||||
android:clickable="true"
|
|
||||||
android:focusable="true"
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
android:background="?attr/selectableItemBackground" />
|
android:id="@+id/post_filter_usage_recycler_view_item_post_filter"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:nestedScrollingEnabled="false" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
|
@ -1372,4 +1372,7 @@
|
||||||
Otherwise, Infinity may not load posts at all. Sorry for the inconvenience.</string>
|
Otherwise, Infinity may not load posts at all. Sorry for the inconvenience.</string>
|
||||||
<string name="i_understand">I understand</string>
|
<string name="i_understand">I understand</string>
|
||||||
|
|
||||||
|
<string name="click_to_apply_post_filter">Click here to apply it to some post feeds</string>
|
||||||
|
<string name="post_filter_usage_embedded_more_count">and %1$d more</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
|
Loading…
Reference in New Issue
Block a user