J'ai problème avec mon AutoCompleteTextView,Android AutoCompleteTextView afficher le choosen un
Quand je choisis une de la suggestion,
Il doit indiquer le nom du produit (indésirable Nourriture ou nourriture occidentale). Quelqu'un s'il vous plaît aidez-moi à résoudre ce problème. Ci-dessous l'adaptateur & Classe de filtre.
Filtre Classe FiltreProduit public class {étend filtre AdapterProductAutoComplete adapterProductAutoComplete; Liste originaleListe; Liste filteredList;
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();
}
}
classe Adaptateur
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;
}
}
Merci beaucoup !! Mon problème à résoudre. – user2412351
Je contré un nouveau problème, il retourne la position de l'item de suggestion au lieu de l'ID correct. disons que je renvoie la suggestion 5, je choisis le premier, mais il affichera dans le champ le premier dans un arrayliste, pas celui que je choisis. Comprenez vous? – user2412351
utilise la méthode 'getItemAtPosition()'. Code: - autoComplete.setOnItemClickListener (nouveau AdapterView.OnItemClickListener() { @Override publique vide onItemClick (AdapterView > adapterView, Vue vue, i int, long l) { selectedProduct = adapterView.getItemAtPosition (i);} }) –