그렇다면, 아마도 어댑터의 구현이 문제가 되지 않을까 생각되네요. 아래처럼 구현이 되었는지 궁금합니다.
public class CountryAdapter extends BaseAdapter implements Filterable {
List<String> orginalItems, filteredItems;
CountryFilter filter;
public int getCount() {
return filteredItems.size();
}
public String getItem(int position) {
return filteredItems.get(position);
}
@Override
public View getView(int position, View convertView, ViewGroup parent){
//your logic
}
@Override
public Filter getFilter() {
if (filter == null)
filter = new CountryFilter();
return filter;
}
private class CountryFilter extends Filter {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults results = new FilterResults();
//your comparison logic
return results;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
filteredItems = (List<String>) results.values;
notifyDataSetChanged();
}
}
}
Filterable 인터페이스를 구현하셔서 Adapter의 getFilter()메소드에서 커스텀 필터를 넘겨주세요. 그리고 어댑터에서는 필터된 데이터를 가지고 화면에 보여주어야 하기 때문에 원본 데이터셑, 필터된 후의 데이터 셑이 다 필요합니다.