Ich habe Probleme mit meinem AutoCompleteTextView,Android AutoCompleteTextView Anzeige der gewählten ein
Wenn ich wählen Sie eine der Vorschlag,
Sie der Name des Produkts zeigen sollte (Junk Essen oder westliche Küche). Bitte helfen Sie mir, das zu lösen. Unten ist Adapter & Filterklasse.
Filterklasse public class Produktfilter erweitert Filter { AdapterProductAutoComplete adapterProductAutoComplete; Liste originalListe; Liste gefiltertListe;
public ProductFilter (AdapterProductAutoComplete adapterProductAutoComplete, List<Product>
originalList){
super();
this.adapterProductAutoComplete = adapterProductAutoComplete;
this.originalList = originalList;
this.filteredList = new ArrayList<>();
}
@Override
protected Filter.FilterResults performFiltering (CharSequence constraint){
filteredList.clear();
final FilterResults results = new FilterResults();
if(constraint == null || constraint.length() == 0){
filteredList.addAll(originalList);
}else{
final String filterPattern = constraint.toString().toLowerCase().trim();
for (final Product product : originalList){
if(product.getProductName().toLowerCase().contains(filterPattern) || Integer
.toString(product.getProductId()).toLowerCase().contains(filterPattern)){
filteredList.add(product);
}
}
}
results.values = filteredList;
results.count = filteredList.size();
return results;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
adapterProductAutoComplete.filteredProducts.clear();
adapterProductAutoComplete.filteredProducts.addAll((List) results.values);
adapterProductAutoComplete.notifyDataSetChanged();
}
}
Adapter Klasse
public class AdapterProductAutoComplete extends ArrayAdapter<Product>{
private final List<Product> products;
public List<Product> filteredProducts = new ArrayList<>();
public AdapterProductAutoComplete(Context context, List<Product> products){
super(context, 0, products);
this.products = products;
}
@Override
public int getCount(){
return filteredProducts.size();
}
@Override
public Filter getFilter(){
return new ProductFilter(this, products);
}
@Override
public View getView(int position, View convertView, ViewGroup parent){
Product product = filteredProducts.get(position);
LayoutInflater inflater = LayoutInflater.from(getContext());
convertView = inflater.inflate(R.layout.list_row_actproduct, parent, false);
TextView tvCode = (TextView) convertView.findViewById(R.id.actproduct_productcode);
TextView tvName = (TextView) convertView.findViewById(R.id.actproduct_productname);
tvCode.setText(Integer.toString(product.getProductId()));
tvName.setText(product.getProductName());
return convertView;
}
}
Vielen Dank !! Mein Problem lösen. – user2412351
Ich begegne einem neuen Problem, es gibt die Vorschlagsposition statt der richtigen ID zurück. Lassen Sie es sagen, dass es 5 Vorschlag zurückgibt, wähle ich das erste, aber es wird im Feld das erste in einer arraylist, nicht das anzeigen, das ich wähle. Verstehst du? – user2412351
Verwenden Sie die 'getItemAtPosition()' Methode. Code: - autoComplete.setOnItemClickListener (neu AdapterView.OnItemClickListener() { @Override public void onItemClick (AdapterView > adapterView, Ansicht Ansicht, int i, lange l) { selectedProduct = adapterView.getItemAtPosition (i);} }); –