2010-11-14 5 views
0

Je dois filtrer la vue de liste selon l'entrée de l'utilisateur dans le champ de texte d'édition. Si l'utilisateur entrent la lettre «un» je dois montrer les articles de liste commence par «un» .Peut-on me donner quelques idées? ce ? Merci d'avance?Filtrer ListView Basé sur les entrées de l'utilisateur dans Android?

void searchEngine(final String[] strArr){ 
     LinearLayout llay=new LinearLayout(this); 
     llay.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));   
     llay.setOrientation(LinearLayout.VERTICAL); 

     final ListView lv=new ListView(this);   
     lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_checked, strArr));  


     final EditText ed=new EditText(searcher.this); 
     ed.setWidth(80); 
     ed.setOnEditorActionListener(new OnEditorActionListener() { 

     @Override 
     public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
      // TODO Auto-generated method stub 
      lv.setTextFilterEnabled(true); 
      String strfilter=ed.getText().toString(); 
      lv.setFilterText(strfilter); 

      return false; 
     } 
    }); 

     llay.addView(ed); 
     llay.addView(lv); 


    setContentView(llay); 

} 
+0

Je ne suis pas en mesure de filtrer la vue liste. Au moment de saisir des valeurs dans le champ editText, j'ai besoin de filtrer listView. – Alex

Répondre

0

onEditorAction est appelé pas après l'entrée d'un caractère, mais après quelques actions comme par exemple en appuyant sur Entrée. Essayez plutôt d'utiliser TextWatcher.

ed.addTextChangedListener(new TextWatcher() { 
    @Override 
    public void afterTextChanged(Editable s) { 
     lv.setFilterText(s.toString()); 
    } 

    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { } 

    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) { } 
}); 
0

Voici ce que vous cherchiez: search dialog. Remplissez les suggestions avec les éléments dans le ListView, pendant que vous tapez dedans il sera filtré. Il est préférable de filtrer la boîte de dialogue de recherche au lieu de filtrer la vue de liste.

Si vous ne souhaitez afficher qu'un seul élément à la fin de la liste, sélectionnez l'élément sélectionné (cliqué) dans la boîte de dialogue de recherche et supprimez tous les éléments de la liste qui ne sont pas égaux.

Questions connexes