นี่เป็นคำตอบทั่วไปเพิ่มเติมเล็กน้อยพร้อมคำอธิบายเพิ่มเติมสำหรับผู้ดูในอนาคต
เพิ่มฟังข้อความเปลี่ยน
หากคุณต้องการค้นหาความยาวข้อความหรือทำอย่างอื่นหลังจากที่ข้อความถูกเปลี่ยนคุณสามารถเพิ่มผู้ฟังที่เปลี่ยนข้อความให้กับข้อความแก้ไขของคุณ
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, และonTextChangedafterTextChanged
การนับจำนวนตัวอักษร
คุณสามารถรับจำนวนตัวละครในonTextChangedหรือbeforeTextChangedด้วย
charSequence.length()
หรือafterTextChangedด้วย
editable.length()
ความหมายของวิธีการ
พารามิเตอร์มีความสับสนเล็กน้อยดังนั้นนี่คือคำอธิบายเพิ่มเติมเล็กน้อย
beforeTextChanged
beforeTextChanged(CharSequence charSequence, int start, int count, int after)
charSequence: นี่คือเนื้อหาข้อความก่อนทำการเปลี่ยนแปลงที่รอดำเนินการ คุณไม่ควรลองเปลี่ยนมัน
start: นี่คือดัชนีที่จะแทรกข้อความใหม่ หากเลือกช่วงไว้แสดงว่าเป็นดัชนีเริ่มต้นของช่วง
count: นี่คือความยาวของข้อความที่เลือกที่จะถูกแทนที่ ถ้าไม่มีอะไรจะเลือกแล้วจะcount0
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นี่คือข้อความที่แก้ไขได้ของ ถ้าคุณเปลี่ยนมันคุณต้องระวังไม่ให้วนซ้ำไม่สิ้นสุด ดูเอกสารประกอบสำหรับรายละเอียดเพิ่มเติม
