นี่เป็นคำตอบทั่วไปเพิ่มเติมเล็กน้อยพร้อมคำอธิบายเพิ่มเติมสำหรับผู้ดูในอนาคต
เพิ่มฟังข้อความเปลี่ยน
หากคุณต้องการค้นหาความยาวข้อความหรือทำอย่างอื่นหลังจากที่ข้อความถูกเปลี่ยนคุณสามารถเพิ่มผู้ฟังที่เปลี่ยนข้อความให้กับข้อความแก้ไขของคุณ
EditText editText = (EditText) findViewById(R.id.testEditText);
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence charSequence, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable editable) {
}
});
ฟังความต้องการTextWatcher
ซึ่งจะต้องมีสามวิธีที่จะแทนที่: beforeTextChanged
, และonTextChanged
afterTextChanged
การนับจำนวนตัวอักษร
คุณสามารถรับจำนวนตัวละครในonTextChanged
หรือbeforeTextChanged
ด้วย
charSequence.length()
หรือafterTextChanged
ด้วย
editable.length()
ความหมายของวิธีการ
พารามิเตอร์มีความสับสนเล็กน้อยดังนั้นนี่คือคำอธิบายเพิ่มเติมเล็กน้อย
beforeTextChanged
beforeTextChanged(CharSequence charSequence, int start, int count, int after)
charSequence
: นี่คือเนื้อหาข้อความก่อนทำการเปลี่ยนแปลงที่รอดำเนินการ คุณไม่ควรลองเปลี่ยนมัน
start
: นี่คือดัชนีที่จะแทรกข้อความใหม่ หากเลือกช่วงไว้แสดงว่าเป็นดัชนีเริ่มต้นของช่วง
count
: นี่คือความยาวของข้อความที่เลือกที่จะถูกแทนที่ ถ้าไม่มีอะไรจะเลือกแล้วจะcount
0
after
: นี่คือความยาวของข้อความที่จะแทรก
onTextChanged
onTextChanged(CharSequence charSequence, int start, int before, int count)
charSequence
: นี่คือเนื้อหาข้อความหลังจากทำการเปลี่ยนแปลง คุณไม่ควรพยายามแก้ไขค่านี้ที่นี่ ปรับเปลี่ยนeditable
ในafterTextChanged
ถ้าคุณต้องการ
start
: นี่คือดัชนีของจุดเริ่มต้นของข้อความใหม่ที่ถูกแทรก
before
: นี่คือค่าเก่า มันคือความยาวของข้อความที่เลือกก่อนหน้านี้ที่ถูกแทนที่ นี่เป็นค่าเดียวกับcount
ในbeforeTextChanged
ใน
count
: นี่คือความยาวของข้อความที่ถูกแทรก นี่เป็นค่าเดียวกับafter
ในbeforeTextChanged
ใน
afterTextChanged
afterTextChanged(Editable editable)
เช่นonTextChanged
นี้ถูกเรียกหลังจากการเปลี่ยนแปลงได้ทำไปแล้ว อย่างไรก็ตามตอนนี้ข้อความอาจถูกแก้ไข
editable
: EditText
นี่คือข้อความที่แก้ไขได้ของ ถ้าคุณเปลี่ยนมันคุณต้องระวังไม่ให้วนซ้ำไม่สิ้นสุด ดูเอกสารประกอบสำหรับรายละเอียดเพิ่มเติม