2017-09-03 6 views
0

J'utilise la saisie de texte automatique avec la valeur arraylist [aaa0, aaa1, ... aaa100, aab0, aab1, ..., aab100], j'entre la valeur 'aa' et défile jusqu'à la valeur 10 suivante ie.'aa10'et ensuite j'entre la valeur 'aab' la liste de suggestion commence à partir de la 10ème valeur c'est-à-dire 'aab10'. Je dois faire défiler vers le haut pour voir la première valeur i.e 'aab0'. Je veux que la première valeur de la liste de suggestions apparaisse quand je change le texte de recherche. suggestion list screenshotMise à jour de l'index de la liste de suggestions dans la saisie semi-automatique sur textchange

Répondre

0

Vous devez étendre la classe AutoCompleteTextView et remplacer la méthode onFilterComplete où vous devez rejeter et montrer le menu déroulant à nouveau pour rafraîchir la vue de la liste.

Aussi je suggère au lieu d'étendre AutoCompleteTextView étendre le android.support.v7.widget.AppCompatAutoCompleteTextView pour le soutien évidemment mieux

est ici le code

package your.package.name; 
import android.content.Context; 
import android.util.AttributeSet; 
import android.support.v7.widget.*; 

public class CustomAutoCompleteTextView extends AppCompatAutoCompleteTextView { 

     public CustomAutoCompleteTextView(Context context) { 
      super(context); 
     } 

     public CustomAutoCompleteTextView(Context context, AttributeSet attrs) { 
      super(context, attrs); 
     } 

     public CustomAutoCompleteTextView(Context context, AttributeSet attrs, int defStyleAttr) { 
      super(context, attrs, defStyleAttr); 
     } 

     @Override 
     public void onFilterComplete(int count) { 
      super.onFilterComplete(count); 
      //show and dismiss the drop down to refresh the list in it 
      this.dismissDropDown(); 
      this.showDropDown(); 
     } 
} 

EDIT

Vous pouvez également utiliser la méthode AutoCompleteTextView.setListSelection() pour faire défiler vers le haut. Au lieu de rejeter et d'afficher le DropDown sur chaque filtre , ce qui est plus efficace.

 @Override 
     public void onFilterComplete(int count) { 
      super.onFilterComplete(count); 
      //set list selection to 0 
      if(getListSelection() != 0) 
       this.setListSelection(0); 
     } 
+0

Merci pour reply..I ne peut pas rejeter le menu déroulant sur tous les performed.I de filtre nécessaire de faire défiler la liste uniquement vers le haut sur le filtre effectué sans rejeter le menu déroulant –

+0

@MaheshAmbekar Consultez l'édition. Exactement ce que tu veux je suppose –