Working on an android app, which has a form with autocompletetextview with custom adapter, for which we have arraylist of around 1k entries. But with 1K data it is not working. With around 400 entries, it is working but filtering is slow. What can be done to handle this kind of large data set?
following is the code snippet for filtering:
@Override
protected FilterResults performFiltering(CharSequence constraint) {
if (constraint != null) {
suggestions.clear();
for (ToMeet toMeet : tempItems) {
if (toMeet.getNm().toLowerCase().contains(constraint.toString().toLowerCase()) ||
(toMeet.getAptNo() != null && toMeet.getAptNo().toLowerCase().toLowerCase().
contains(constraint.toString().toLowerCase()))) {
suggestions.add(toMeet);
}
}
FilterResults filterResults = new FilterResults();
filterResults.values = suggestions;
filterResults.count = suggestions.size();
return filterResults;
} else {
return new FilterResults();
}
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
if (results != null && results.count > 0) {
ArrayList<ToMeet> filteredList = (ArrayList<ToMeet>) ((ArrayList<ToMeet>) results.values).clone();
clear();
for (ToMeet toMeet : filteredList) {
add(toMeet);
}
notifyDataSetChanged();
}
}
};