diff --git a/Habitica/res/layout/fragment_guild_recyclerview.xml b/Habitica/res/layout/fragment_guild_recyclerview.xml
new file mode 100644
index 000000000..2596c3177
--- /dev/null
+++ b/Habitica/res/layout/fragment_guild_recyclerview.xml
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml
index 390d4b3b9..01c332fdb 100644
--- a/Habitica/res/values/strings.xml
+++ b/Habitica/res/values/strings.xml
@@ -243,6 +243,7 @@ To start, which parts of your life do you want to improve?
Privacy
Write Message
Post
+ Search for guilds
Due: %s
current streak: %d
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/PublicGuildsRecyclerViewAdapter.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/PublicGuildsRecyclerViewAdapter.java
index 927526881..6677330e4 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/PublicGuildsRecyclerViewAdapter.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/PublicGuildsRecyclerViewAdapter.java
@@ -13,21 +13,26 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
+import android.widget.Filter;
+import android.widget.Filterable;
import android.widget.TextView;
+import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
-public class PublicGuildsRecyclerViewAdapter extends RecyclerView.Adapter {
+public class PublicGuildsRecyclerViewAdapter extends RecyclerView.Adapter implements Filterable{
public APIHelper apiHelper;
private List publicGuildList;
private List memberGuildIDs;
+ private List publicGuildListCopy;
public void setPublicGuildList(List publicGuildList) {
this.publicGuildList = publicGuildList;
+ this.publicGuildListCopy = new ArrayList<>(publicGuildList);
this.notifyDataSetChanged();
}
@@ -93,6 +98,42 @@ public class PublicGuildsRecyclerViewAdapter extends RecyclerView.Adapter filteredGuilds = null;
+ if(constraint.length() == 0) {
+ filteredGuilds = publicGuildListCopy;
+ } else {
+ filteredGuilds = getFilteredResults(constraint.toString().toLowerCase());
+ }
+
+ FilterResults results = new FilterResults();
+ results.values = filteredGuilds;
+ return results;
+ }
+
+ @Override
+ protected void publishResults(CharSequence constraint, FilterResults results) {
+ publicGuildList = (List) results.values;
+ PublicGuildsRecyclerViewAdapter.this.notifyDataSetChanged();
+ }
+ };
+ }
+
+ protected List getFilteredResults(String constraint) {
+ List filteredGuilds = new ArrayList<>();
+
+ for(Group guild : publicGuildListCopy) {
+ if(guild.name.toLowerCase().contains(constraint)) {
+ filteredGuilds.add(guild);
+ }
+ }
+
+ return filteredGuilds;
+ }
static class GuildViewHolder extends RecyclerView.ViewHolder {
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/PublicGuildsFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/PublicGuildsFragment.java
index e58de9d6a..50a98adea 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/PublicGuildsFragment.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/PublicGuildsFragment.java
@@ -14,13 +14,14 @@ import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.SearchView;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
-public class PublicGuildsFragment extends BaseMainFragment {
+public class PublicGuildsFragment extends BaseMainFragment implements SearchView.OnQueryTextListener {
List memberGuildIDs;
List guilds;
@@ -30,13 +31,17 @@ public class PublicGuildsFragment extends BaseMainFragment {
private View view;
private PublicGuildsRecyclerViewAdapter viewAdapter;
+ private SearchView guildSearchView;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
if (view == null) {
- view = inflater.inflate(R.layout.fragment_recyclerview, container, false);
+ view = inflater.inflate(R.layout.fragment_guild_recyclerview, container, false);
+
+ guildSearchView = (SearchView)view.findViewById(R.id.guild_search_view);
+ guildSearchView.setOnQueryTextListener(this);
unbinder = ButterKnife.bind(this, view);
recyclerView.setLayoutManager(new LinearLayoutManager(this.activity));
@@ -76,4 +81,16 @@ public class PublicGuildsFragment extends BaseMainFragment {
});
}
}
+
+ @Override
+ public boolean onQueryTextSubmit(String s) {
+ viewAdapter.getFilter().filter(s);
+ return true;
+ }
+
+ @Override
+ public boolean onQueryTextChange(String s) {
+ viewAdapter.getFilter().filter(s);
+ return true;
+ }
}