Can anyone kindly guide me as to how to implement a dynamic auto complete widget in android. My requirement is, as I type a letter, a thread will work and will return an arr
Have you looked at AutoCompleteTextView?
It does the display of what you want. Now all you need is an adapter that implements Filterable to generate the set of five. Filterable says that an entity will be able to create a Filter object. Filter objects use a thread pool and dispatch the filtering on a separate worker thread and the binding to the view on the UI thread.
So let's say we have
public class TextAdapter extends BaseAdapter implements Filterable {
List myList;
Filter myFilter;
TextAdapter(String[] strings) {
myList = Arrays.asList(strings);
myFilter = new MyFilter(myList);
}
...
// implement the BaseAdapter methods as needed to manage the list.
//
public void setContents(List strs) {
myList.clear();
myList.addAll(strs);
mFilter = new Filter(myList);
}
public Filter getFilter() {
return myFilter;
}
private final class MyFilter implements Filter {
final List mOriginalList;
public MyFilter(List list) {
mOriginalList = new ArrayList(list);
}
public Filter.FilterResults performFiltering(CharSequence constraint) {
// Search through your original list
Filter.FilterResults results = new Filter.FilterResults();
List strs = new ArrayList();
if (TextUtils.isEmpty(constraint)) {
strs.addAll(myOriginalList);
}
for (String str : myOriginalList) {
if (matches(str, constraint)) {
strs.add(str);
}
}
if (results.size > 5) {
// prune the list to your own tastes
}
results.count = strs.size();
results.value = strs;
}
public void publishResults(CharSequence constraint, Filter.FilterResults results)
setContents((List)results.value);
notifyDatasetChanged();
}
public boolean matches(String str, CharSequence value) {
/// implement this part
}
}
}