Autore Topic: listview filtrata  (Letto 563 volte)

Offline GuiZ

  • Nuovo arrivato
  • *
  • Post: 26
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    LG OPTIMUS ONE LP-500
  • Play Store ID:
    Geek-Blog.it
  • Sistema operativo:
    Ubuntu 10.10
listview filtrata
« il: 28 Aprile 2011, 15:11:21 CEST »
0
Salve a tutti,
ho un problema con setFilterQueryProvider. Vorrei un pò di chiarezza che non ho ben capito come funziona!

Il mio obbiettivo è filtrare la listview tramite una edittext.

Alla edit text:
Codice (Java): [Seleziona]
 
        txtFilter = (EditText)findViewById(R.id.edTxtSearch);
        txtFilter.addTextChangedListener(new TextWatcher(){
            public void onTextChanged(CharSequence s, int start, int before, int count) {
            }

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

                        @Override
                        public void afterTextChanged(Editable s) {
                                adapter.getFilter().filter(s);
                        }
        });

Invece all'adapter popolato già da db con un simplecursor ho aggiunto questo:
Codice (Java): [Seleziona]
        adapter.setFilterQueryProvider(new FilterQueryProvider() {
                  public Cursor runQuery(CharSequence constraint) {
                        db.open();
                        Cursor cur = db.fetchProducts();
                    db.close();
                        return cur;
                  }

        });

Per prova ho ripreso tutti i record del db ma comunque non funziona la listview si svuota.
Dove sbaglio?
E' possibile non ricercare di nuovo nel db ma nel cursor già settato?

Grazie a tutti!


Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:listview filtrata
« Risposta #1 il: 28 Aprile 2011, 16:46:52 CEST »
0
non ti funziona perchè chiudi il db prima di restituire il cursor...
prova a togliere il db.close()
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline GuiZ

  • Nuovo arrivato
  • *
  • Post: 26
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    LG OPTIMUS ONE LP-500
  • Play Store ID:
    Geek-Blog.it
  • Sistema operativo:
    Ubuntu 10.10
Re:listview filtrata
« Risposta #2 il: 28 Aprile 2011, 17:24:23 CEST »
0
adesso provo.
Ma secondo te è una soluzione elegante?
o ce qualche metodo migliore?

Grazie

Offline GuiZ

  • Nuovo arrivato
  • *
  • Post: 26
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    LG OPTIMUS ONE LP-500
  • Play Store ID:
    Geek-Blog.it
  • Sistema operativo:
    Ubuntu 10.10
Re:listview filtrata
« Risposta #3 il: 29 Aprile 2011, 14:01:19 CEST »
0
Nulla non funge!

Offline AndFan

  • Nuovo arrivato
  • *
  • Post: 19
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Tattoo
Re:listview filtrata
« Risposta #4 il: 11 Agosto 2011, 21:55:06 CEST »
0
mi associo alla domanda..ho provato a non chiudere li il db ma in ondestroy ma non cambia nulla, la lista non viene filtrata. Suggerimenti?