Bir çözüm buldum, en iyi çözüm olup olmadığını bilmiyorum, ama çok iyi çalışıyor gibi görünüyor. Ne yaptım ArrayAdapter uzatan bir özel adaptör yaratıldı. Özel bağdaştırıcıda getFilter'ı geçersiz kıldım ve performFiltering'i geçersiz kılan kendi Filter sınıfımı oluşturdum. Bu yeni bir iş parçacığı başlatır, dolayısıyla UI'yi kesmez. Aşağıda bir barebone örneğidir.
MyActivity.java
public class MyActivity extends Activity {
private AutoCompleteTextView style;
@Override
public void onCreate(Bundle savedInstanceState) {
...
style = (AutoCompleteTextView) findViewById(R.id.style);
adapter = new AutoCompleteAdapter(this, android.R.layout.simple_dropdown_item_1line);
style.setAdapter(adapter);
}
}
AutoCompleteAdapter.java
public class AutoCompleteAdapter extends ArrayAdapter<Style> implements Filterable {
private ArrayList<Style> mData;
public AutoCompleteAdapter(Context context, int textViewResourceId) {
super(context, textViewResourceId);
mData = new ArrayList<Style>();
}
@Override
public int getCount() {
return mData.size();
}
@Override
public Style getItem(int index) {
return mData.get(index);
}
@Override
public Filter getFilter() {
Filter myFilter = new Filter() {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults filterResults = new FilterResults();
if(constraint != null) {
// A class that queries a web API, parses the data and returns an ArrayList<Style>
StyleFetcher fetcher = new StyleFetcher();
try {
mData = fetcher.retrieveResults(constraint.toString());
}
catch(Exception e) {
Log.e("myException", e.getMessage());
}
// Now assign the values and count to the FilterResults object
filterResults.values = mData;
filterResults.count = mData.size();
}
return filterResults;
}
@Override
protected void publishResults(CharSequence contraint, FilterResults results) {
if(results != null && results.count > 0) {
notifyDataSetChanged();
}
else {
notifyDataSetInvalidated();
}
}
};
return myFilter;
}
}
müthiş linki yanı ayrıştırma sunucu istekleri ve json ele alınmasını s. io/blog/2014/04/12/android-autocompletetextview-ile-öneriler-bir-web-servis/ – Tina