0

Ceci provient de la classe d'activité principale. J'ai un arraylist de tableaux et j'ai besoin de créer une barre de recherche pour la liste.Comment puis-je inclure une recherche pour ma liste personnalisée dans le studio android?

adapter = new ArrayAdapter<String[]>(this, R.layout.list_view, android.R.id.text1, spellList) 
    { 
     public View getView(int position, View convertView, ViewGroup parent) 
     { 
      View view = super.getView(position, convertView, parent); 

      String[] entry = spellList.get(position); 
      TextView text1 = (TextView) view.findViewById(android.R.id.text1); 
      TextView text2 = (TextView) view.findViewById(android.R.id.text2); 
      text1.setText(entry[0]); 
      text2.setText(entry[1]); 

      return view; 
     } 
    }; 
    wizList.setAdapter(adapter); 

    searchText.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

     } 

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

     } 


     @Override 
     public void afterTextChanged(Editable s) { 

     } 
    }); 

Voici les données d'un Arraylist de tableaux de chaînes. Préféré si recherché par le nom du sort.

final ArrayList<String[]> spellList; 

public WizardDatabase() 
{ 
    spellList = new ArrayList<>(); 

    spellList.add(new String[] { "Resistance", "Subject gains +1 on saving throws."}); 
    spellList.add(new String[] { "Acid Splash", "Orb deals 1d3 acid damage."}); 
    spellList.add(new String[] { "Detech Poison", "Detects poison in one creature or small object."}); 

public ArrayList<String[]> getList() 
{ 
    return spellList; 
} 

merci.

Répondre

0

Si elle est simple recherche de chaîne ne puis utilisez le code suivant

searchText.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

     } 

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

     } 


     @Override 
     public void afterTextChanged(Editable s) { 
      if (s.length() > 3) { // it's for performance I've put 3 you can change it 
       adapter.getFilter().filter(s.toString()); 
      } 
     } 
    }); 
+0

Le filtre ne fonctionne pas pour mon arraylist de tableaux de chaînes. C'est principalement là où le problème est. –

+0

@GarryAlcorn alors vous devez implémenter votre propre version du filtre –

+0

Aurais-je besoin de créer un adaptateur personnalisé? –