2016-04-26 3 views
0

Ich habe einen EditText, TextView und eine Taste. Wenn ich es drücke, aktualisiert Textview durch append(). Aber wenn ich diesen Knopf in der nächsten Zeit drücke, fügt Text wieder hinzu und aktualisiert meine Textansicht. Wie kann ich damit umgehen? Ohne so etwas wie:Button und EditText check

btn.setClickable(false); 

oder

btn.setVisibility(View.GONE); 

denn wenn der Text in dem EditText Feld Updates Taste arbeiten müssen.

+0

btn.setEnabled (false); –

Antwort

1

Grundsätzlich müssen Sie zwei Dinge tun:

  • deaktivieren Sie die Taste Sobald die Taste gedrückt wird, können Sie die TextView nicht zweimal mit dem gleichen Text aktualisieren, indem Sie btn.setEnabled(false);
  • den Button erneut aktivieren, sobald sich der EditText-Inhalt ändert. Das kann mit einem TextWatcher gemacht werden.

Ein Beispiel für die TextWatcher Implementierung sieht wie folgt aus:

editText.addTextChangedListener(new TextWatcher() { 

    public void afterTextChanged(Editable s) {} 

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

    public void onTextChanged(CharSequence s, int start, int before, int count) { 
     btn.setEnabled(true); 
    } 

}); 

Viel Glück!

1

Disable-Taste, wenn Sie die Taste drücken und es ermöglichen, wenn der Text in der EditText geändert wird, wie zum Beispiel:

Button btn = (Button) findViewById(R.id.mybutton); 
btn.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     appendToEditText(); 
     btn.setClickable(false); 
    } 
}); 

EditText editText = (EditText)findViewById(R.id.myedittext); 
editText.addTextChangedListener(new TextWatcher() { 

    @Override 
    public void afterTextChanged(Editable s) { 
     // Not Used 

    } 

    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
     // Not Used 

    } 

    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 
     btn.setClickable(true); 
    } 
});