@@ -7,76 +7,70 @@ import android.widget.Filter;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.List;
import java.util.Locale;
public class KnownHostsAdapter extends ArrayAdapter<String> {
- private ArrayList<String> domains;
- private Filter domainFilter = new Filter() {
+ private ArrayList<String> domains;
+ private Filter domainFilter = new Filter() {
- @Override
- protected FilterResults performFiltering(CharSequence constraint) {
- if (constraint != null) {
- ArrayList<String> suggestions = new ArrayList<>();
- final String[] split = constraint.toString().split("@");
- if (split.length == 1) {
- for (String domain : domains) {
- suggestions.add(split[0].toLowerCase(Locale
- .getDefault()) + "@" + domain);
- }
- } else if (split.length == 2) {
- for (String domain : domains) {
- if (domain.contentEquals(split[1])) {
- suggestions.clear();
- break;
- } else if (domain.contains(split[1])) {
- suggestions.add(split[0].toLowerCase(Locale
- .getDefault()) + "@" + domain);
- }
- }
- } else {
- return new FilterResults();
- }
- FilterResults filterResults = new FilterResults();
- filterResults.values = suggestions;
- filterResults.count = suggestions.size();
- return filterResults;
- } else {
- return new FilterResults();
- }
- }
+ @Override
+ protected FilterResults performFiltering(CharSequence constraint) {
+ final ArrayList<String> suggestions = new ArrayList<>();
+ final String[] split = constraint == null ? new String[0] : constraint.toString().split("@");
+ if (split.length == 1) {
+ final String local = split[0].toLowerCase(Locale.ENGLISH);
+ for (String domain : domains) {
+ suggestions.add(local + "@" + domain);
+ }
+ } else if (split.length == 2) {
+ final String localPart = split[0].toLowerCase(Locale.ENGLISH);
+ final String domainPart = split[1].toLowerCase(Locale.ENGLISH);
+ if (domains.contains(domainPart)) {
+ return new FilterResults();
+ }
+ for (String domain : domains) {
+ if (domain.contains(domainPart)) {
+ suggestions.add(localPart + "@" + domain);
+ }
+ }
+ } else {
+ return new FilterResults();
+ }
+ FilterResults filterResults = new FilterResults();
+ filterResults.values = suggestions;
+ filterResults.count = suggestions.size();
+ return filterResults;
+ }
- @Override
- protected void publishResults(CharSequence constraint, FilterResults results) {
- ArrayList filteredList = (ArrayList) results.values;
- if (results.count > 0) {
- clear();
- for (Object c : filteredList) {
- add((String) c);
- }
- notifyDataSetChanged();
- }
- }
- };
+ @Override
+ protected void publishResults(CharSequence constraint, FilterResults results) {
+ ArrayList filteredList = (ArrayList) results.values;
+ if (results.count > 0) {
+ clear();
+ addAll(filteredList);
+ notifyDataSetChanged();
+ }
+ }
+ };
- public KnownHostsAdapter(Context context, int viewResourceId, Collection<String> mKnownHosts) {
- super(context, viewResourceId, new ArrayList<>());
- domains = new ArrayList<>(mKnownHosts);
- }
+ public KnownHostsAdapter(Context context, int viewResourceId, Collection<String> mKnownHosts) {
+ super(context, viewResourceId, new ArrayList<>());
+ domains = new ArrayList<>(mKnownHosts);
+ }
- public KnownHostsAdapter(Context context, int viewResourceId) {
- super(context, viewResourceId, new ArrayList<>());
- domains = new ArrayList<>();
- }
+ public KnownHostsAdapter(Context context, int viewResourceId) {
+ super(context, viewResourceId, new ArrayList<>());
+ domains = new ArrayList<>();
+ }
- public void refresh(Collection<String> knownHosts) {
- domains = new ArrayList<>(knownHosts);
- notifyDataSetChanged();
- }
+ public void refresh(Collection<String> knownHosts) {
+ domains = new ArrayList<>(knownHosts);
+ notifyDataSetChanged();
+ }
- @Override
- @NonNull
- public Filter getFilter() {
- return domainFilter;
- }
+ @Override
+ @NonNull
+ public Filter getFilter() {
+ return domainFilter;
+ }
}