2016-06-01 11 views
2

Also möchte ich den Benutzer in der Lage sein, den Wert eines EditText zu ändern und einen entsprechenden Wert in der Datenbank zu aktualisieren.Aktualisiere den Wert in der Datenbank, nachdem mit EditText fertig?

Bis jetzt habe ich verschiedene Techniken untersucht, aber sie haben alle Probleme.

  1. TextWatchers scheinen, zu arbeiten, aber da sie nach jeder Nummer/Buchdruck auslösen, die in die Datenbank wie viele verschwenderische Anrufe scheint.

  2. Fokus Auslöser, aber viele der Beiträge, die ich gefunden habe, sind alt und möglicherweise veraltet, und ich weiß nicht, ob sie auf allen Geräten funktionieren werden.

Was ist die aktuellere/aktuellere Lösung für dieses Problem? Wie kann ich allgemein erkennen, wenn ein EditText den Fokus verloren hat und den Datenbankanruf sicher auslösen kann?

Antwort

0

Versuchen Sie, wie dieses

editext.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
     @Override 
     public void onFocusChange(View view, boolean focus) { 
if(focus==false) 
{ 
    //do database operation 
} 
     } 
    }); 
0
  1. Sie vertrauen können auf der Benutzer 'Fertig' drücken:

    editText.setOnEditorActionListener(
        new EditText.OnEditorActionListener() 
        { 
         @Override 
         public boolean onEditorAction(TextView view, int actionId, KeyEvent event) 
         { 
          // you may also use IME_ACTION_SEARCH or 
          // event.getKeyCode() == KeyEvent.KEYCODE_ENTER 
          if (actionId == EditorInfo.IME_ACTION_DONE) 
          { 
           // update database 
    
           // consume event 
           return true; 
          } 
    
          // don't consume event 
          return false; 
         } 
        } 
    ); 
    
  2. Sie können den TextWatcher Ansatz verwenden, aber in Kombination mit einem Timer, der schiebt ein Update auf die Datenbank etwa alle 2 Sekunden nach der letzten Änderung. Sie müssen also einfach den Timer bei der ersten Änderung starten und ihn mit jedem folgenden zurücksetzen.

ich erlebt habe dieses Problem selbst vor einiger Zeit, aber leider konnte ich keine andere Lösung herausfinden, dass die, die oben oder der Ansatz mit dem Focuslistener.

Verwandte Themen