2013-08-13 2 views
0

J'ai un code qui prend des données du curseur SQLite et les met dans listview.Vide ListView lorsque EditText est vide

private void displayListView() { 
    cursor = myDatabase.getJoinedInfo(etSearch.getText().toString().trim()); 

    String[] columns = new String[] { "re_value", "g_value", "ke_value" }; 

    int[] to = new int[] { R.id.tvHiragana, R.id.tvMeaning, R.id.tvKanji }; 

    dataAdapter = new SimpleCursorAdapter(this, R.layout.wordonlist, 
      cursor, columns, to, 0); 

    ListView listView = (ListView) findViewById(R.id.lvWordlist); 
    // Assign adapter to ListView 

    listView.setAdapter(dataAdapter); 
} 

Lorsque EditText est vide, il prend les 10 premières lignes. Comment afficher ListView vide lorsque EditText est vide?

+0

expliquer correctement votre question .. – Riser

Répondre

1

Faire quelque chose comme ceci:

If(yourEditText.length() == 0) 
    yourListView.setAdapter(null); 

Ou vous pouvez utiliser:

If(yourEditText.length() == 0) 
    yourAdapter.clear(); 
+0

a tenté d'implémenter dans setOnKeyListener: etSearch.setOnKeyListener (new OnKeyListener() {public boolean onKey (Voir v, int keyCode, événement KeyEvent) {if (etSearch.getText(). ToString(). Trim () .length() <1) {listView.setAdapter (null);} if (code_clé == 66) {hideKeyboard (v); renvoyer true;} return false;}}); Mais il est très lent ... –

+0

Je pense que vous voulez ajouter une fonctionnalité de recherche dans listview, ai-je raison? –

0

ne définissez pas l'adaptateur tant que EditText n'est pas vide. Vous pouvez définir l'adaptateur après certaines données dans EditText.

+0

Lorsque le démarrage de l'application, tout est ok . Il ne montre rien. Mais lorsqu'il est ajouté et supprimé des lettres dans EditText, ListView avec les 10 premières lignes reste. Je veux le rendre vide –

0

Essayez cette

private void displayListView() { 
    if (etSearch.getText().toString().trim().equals("")) { 
     listView.setAdapter(null); 
    } else { 
     cursor = myDatabase.getJoinedInfo(etSearch.getText().toString() 
       .trim()); 

     String[] columns = new String[] { "re_value", "g_value", "ke_value" }; 

     int[] to = new int[] { R.id.tvHiragana, R.id.tvMeaning, 
       R.id.tvKanji }; 

     dataAdapter = new SimpleCursorAdapter(this, R.layout.wordonlist, 
       cursor, columns, to, 0); 

     ListView listView = (ListView) findViewById(R.id.lvWordlist); 
     // Assign adapter to ListView 

     listView.setAdapter(dataAdapter); 
    } 
} 
+0

problème est ici, j'appelle la méthode displayListView() sur onTextChanged dans TextWatcher qui ne fonctionne pas lorsque EditText est vide. –

+0

a essayé de mettre en œuvre setOnKeyListener:. EtSearch.setOnKeyListener (nouveau OnKeyListener() { \t \t \t OnKey public boolean (Voir v, int codeTouche, événement KeyEvent) { \t \t \t \t si (etSearch.getText() toString() .trim() longueur() <1) { \t \t \t \t \t listView.setAdapter (null); \t \t \t \t}. \t \t \t \t if (keyCode == 66) { \t \t \t \t \t hideKeyboard (v); \t \t \t \t \t return true; \t \t \t \t} \t \t \t \t return false; \t \t \t} \t \t}); –

+0

mais ça marche très lentement ... –

Questions connexes