Ich versuche, einige Elemente in meinem Array-Adapter von AutoCompleteTextView von Google Places API ausblenden. Mehr spezifisch möchte ich die Elemente tha ihre position%2==0
verstecken. Ich fand einige Antworten in Stack-Überlauf, der dies in getView wie dies zu tun, schlägt vor:Elemente aus Array-Adapter ausblenden, nicht entfernen
@Override
public View getView(int position, View view, ViewGroup parent) {
if(position%2==0) {
//something to do here
}
return view;
}
aber ich weiß nicht, was ich im Kommentarbereich zu tun haben. Hier
ist der gesamte Code:
class GooglePlacesAutocompleteAdapter extends ArrayAdapter implements Filterable {
private ArrayList resultList;
public GooglePlacesAutocompleteAdapter(Context context, int textViewResourceId) {
super(context, textViewResourceId);
}
@Override
public int getCount() {
return resultList.size();
}
@Override
public Object getItem(int index) {
return resultList.get(index);
}
@Override
public View getView(int position, View view, ViewGroup parent) {
if(position%2==0) {
//view.setVisibility() maybe?
}
return view;
}
@Override
public Filter getFilter() {
Filter filter = new Filter() {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults filterResults = new FilterResults();
if (constraint != null) {
// Retrieve the autocomplete results.
resultList = autocomplete(constraint.toString());
// Assign the data to the FilterResults
filterResults.values = resultList;
filterResults.count = resultList.size();
}
return filterResults;
}
@Override
protected void publishResults(CharSequence constraint, Filter.FilterResults results) {
if (results != null && results.count > 0) {
notifyDataSetChanged();
} else {
notifyDataSetInvalidated();
}
}
};
return filter;
}
}
Danke Kris. Es funktionierte! Nicht sicher, was du meinst: Stelle sicher, dass du getItem() in getView() verwendest. Teil. Ich musste dies nicht tun –
Nur, dass Sie die Formel resultList Index = Position * 2 + 1 nicht duplizieren müssten. Das wird sicherstellen, dass Sie das richtige Element aus der Liste erhalten. Nun verwendet die Oberklasse 'getView' bereits' getItem'. Wenn Sie 'getView' nicht überschreiben, müssen Sie sich um nichts kümmern, da die Oberklasse das Richtige tun wird. –