2011-07-18 17 views
6

Bu yüzden Android için TextWatcher'ı uygulamaya çalışıyorum ve TextChangedListener'ın birden çok kez çağrılması veya sonsuz bir döngüye girmesini sağlamak için metin olarak kullanmak istiyorum. EditText widget'ını para birimiyle biçimlendirilmiş bir dizgeye dönüştürün. Bunun geçici bir çözüm yaptıklarınTextChangedListener'ı Kaldırma ve yeniden ekleme

afterTextChanged olay daha sonra kendi özel TextWatcher oluşturup oldu did

public class CurrencyTextWatcher implements TextWatcher { 
    private EditText et; 

    public CurrencyTextWatcher(EditText editText) { 
     et = editText; 
    } 

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

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

    public void afterTextChanged(Editable s) { 
     et.removeTextChangedListener(this); 
     et.setText(myCurrencyString); 
     et.addTextChangedListener(this); 
    } 
}

Benim soru, bunu yapmanın daha iyi bir yolu yoktur aşağıdaki

gibi bir şey? Düzenlemelerin nereye gittiğini ve ortaya çıkan biçimlendirilmiş dizeyi tutmak için bir EditText Widget'ı olmasını istiyorum.

Ayrıca, bu şekilde bir TextChangedListener'ı kaldırmak ve eklemekle ilgili başka sorunlar da var mı? peşin

Teşekkür

cevap

3

size EditText afterTextChanged adı verilecek, bu yüzden setText sen afterTextChanged olan ve sadece diyoruz her zaman aradığını kaçınmaları gerektiğini düşünüyorum (set metnini arayarak örn tarafından) güncelleyecektir Everytime bir şey gerçekten değişiyor. hakkında aşağıdaki Bu nasıl

if (!myCurrencyString.equals(et.getText())) 
{ 
    et.setText(myCurrencyString); 
} 
+0

Ah mükemmel .. ben bu düşünmüyordu inanamıyorum. teşekkür ederim – Jason

0

gibi

sth.

private void resetAddTagField() { 
    if (edtView != null && textWatcherListener != null) { 
     edtView.removeTextChangedListener(textWatcherListener); 
     edtView.setText(DEFAULT_TEXT);  

     edtView.addTextChangedListener(textWatcherListener); 
    } 
} 

Öğreniyorum Ne: TextWatcher gücünü hafife almayın: D: D