From 42cf29cbeb74223b61d410d25f29aa7dc19e3cf0 Mon Sep 17 00:00:00 2001 From: Ryan Philipps Date: Sat, 6 Jun 2020 14:41:33 -0400 Subject: [PATCH] Can now sort posts based on creation date --- .../techchat/activity/PostActivity.java | 4 ++- .../mtuosc/techchat/models/PostAdapter.java | 32 +++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/clients/Android/app/src/main/java/org/mtuosc/techchat/activity/PostActivity.java b/clients/Android/app/src/main/java/org/mtuosc/techchat/activity/PostActivity.java index 6c1ac91..a69a873 100644 --- a/clients/Android/app/src/main/java/org/mtuosc/techchat/activity/PostActivity.java +++ b/clients/Android/app/src/main/java/org/mtuosc/techchat/activity/PostActivity.java @@ -94,12 +94,14 @@ public boolean onOptionsItemSelected(MenuItem item) { if (! item.isChecked()) { // call the sort function item.setChecked(true); + adapter.sortPosts(PostAdapter.NEWEST); } break; case R.id.menu_sort_oldest: if (! item.isChecked()) { - // call the sort function + item.setChecked(true); + adapter.sortPosts(PostAdapter.OLDEST); } break; case R.id.menu_sort_trending: diff --git a/clients/Android/app/src/main/java/org/mtuosc/techchat/models/PostAdapter.java b/clients/Android/app/src/main/java/org/mtuosc/techchat/models/PostAdapter.java index d3f9391..0eeddf4 100644 --- a/clients/Android/app/src/main/java/org/mtuosc/techchat/models/PostAdapter.java +++ b/clients/Android/app/src/main/java/org/mtuosc/techchat/models/PostAdapter.java @@ -11,10 +11,17 @@ import org.mtuosc.techchat.R; import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; public class PostAdapter extends RecyclerView.Adapter { private ArrayList posts = new ArrayList<>(); + public static final int NEWEST = 0; + public static final int OLDEST = 1; + public static final int TRENDING = 2; + + @NonNull @Override public PostViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { @@ -53,4 +60,29 @@ public void addPost(Post post) { } public void flushPosts() {posts = new ArrayList();} + + public void sortPosts(int sortBy) { + switch (sortBy) { + case NEWEST: { + Collections.sort(posts, new Comparator() { + @Override + public int compare(Post post, Post t1) { + return post.getTimestamp().compareTo(t1.getTimestamp()); + } + }); + this.notifyDataSetChanged(); + break; + } + case OLDEST: { + Collections.sort(posts, new Comparator() { + @Override + public int compare(Post post, Post t1) { + return post.getTimestamp().compareTo(t1.getTimestamp()) * -1; + } + }); + this.notifyDataSetChanged(); + break; + } + } + } }