Saya tahu sedikit tentang TextWatcher
tetapi itu berlaku pada setiap karakter yang Anda masukkan. Saya ingin pendengar yang aktif setiap kali pengguna selesai mengedit. Apa itu mungkin? Juga di TextWatcher
saya mendapatkan contoh Editable
tapi saya butuh contoh EditText
. Bagaimana cara mendapatkannya?
EDIT : pertanyaan kedua lebih penting. Tolong jawab itu.
Jawaban:
Pertama, Anda dapat melihat apakah pengguna selesai mengedit teks jika
EditText
kehilangan fokus atau jika pengguna menekan tombol selesai (ini tergantung pada implementasi Anda dan apa yang paling cocok untuk Anda). Kedua, Anda tidak bisa mendapatkanEditText
instance di dalamTextWatcher
only jika Anda telah mendeklarasikanEditText
sebagai objek instance. Padahal sebaiknya jangan di edit diEditText
dalamnyaTextWatcher
karena tidak aman.EDIT:
Untuk dapat memasukkan
EditText
instance ke dalamTextWatcher
implementasi Anda, Anda harus mencoba sesuatu seperti ini:Perhatikan bahwa sampel di atas mungkin memiliki beberapa kesalahan tetapi saya hanya ingin menunjukkan kepada Anda sebuah contoh.
sumber
Itu mengganggu saya bahwa menerapkan pendengar untuk semua bidang EditText saya mengharuskan saya memiliki kode verbose yang jelek jadi saya menulis kelas di bawah ini. Semoga bermanfaat bagi siapa saja yang tersandung pada hal ini.
Sekarang menerapkan pendengar sedikit lebih bersih.
Adapun seberapa sering itu diaktifkan, seseorang mungkin dapat mengimplementasikan pemeriksaan untuk menjalankan kode yang mereka inginkan
//Do stuff
setelah diberikan asumber
Siapapun yang menggunakan ButterKnife . Anda bisa menggunakan seperti:
sumber
Saya telah melakukannya dengan menggunakan
AutotextView
:sumber
sumber
TextWatcher
tidak berhasil untuk saya karena terus menyerang untuk setiapEditText
dan mengacaukan nilai satu sama lain.Inilah solusi saya:
Karenanya dengan menggunakan
getChildAt(xx)
metode ini Anda dapat mengambil item apa pun diListView
dan mendapatkan item individu menggunakanfindViewById
. Dan itu akan memberikan nilai terbaru.sumber
Sejauh yang saya bisa pikirkan, hanya ada dua cara Anda bisa melakukannya. Bagaimana Anda tahu bahwa pengguna telah selesai menulis kata? Bisa jadi fokus hilang, atau mengklik tombol "ok". Tidak mungkin di pikiran saya Anda bisa mengetahui pengguna menekan karakter terakhir ...
Jadi panggil
onFocusChange(View v, boolean hasFocus)
atau tambahkan tombol dan click listener untuk itu.sumber
Metode Watcher mengaktifkan setiap input karakter. Jadi, saya membuat kode ini berdasarkan metode onFocusChange:
Untuk menggunakannya, panggil saja seperti ini:
Anda dapat mengabaikan fungsi comS dengan mengganti! ComS (dat.s, "" + EdTe.getText ()) dengan fungsi! Equal. Namun fungsi yang sama itu sendiri kadang tidak bekerja dengan benar dalam waktu proses.
Pendengar onChange akan mengingat data lama EditText saat pengguna fokus mengetik, lalu membandingkan data baru tersebut saat pengguna kehilangan fokus atau beralih ke input lain. Jika membandingkan String lama bukan String baru yang sama, tindakan tersebut akan diaktifkan.
Jika Anda hanya memiliki 1 EditText, maka Anda perlu membuat fungsi ClearFocus dengan membuat EditText Mikro Transparan Rahasia Utama 😸 di luar jendela 😽 dan meminta fokus ke sana, lalu menyembunyikan keyboard melalui Manajer Metode Impor.
sumber