我必须创建一个逗号分隔的数组。因此,在10逗号之后,edittext不应该接受文本或由用户输入的文本<-我必须这样做。这是我正在使用的代码。但是在onTextChanged()中的if条件之后,它会进入无限循环。
addTagsEt.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (tagsArray != null && tagsArray.length == 10) {
Toast.makeText(CreateJobTwoActivity.this, "Only 10 tags considered", Toast.LENGTH_SHORT).show();
addTagsEt.setText(addTagsEt.getText().toString().substring(0, addTagsEt.getText().toString().length() - 1));
}
}
@Override
public void afterTextChanged(Editable s) {
if (addTagsEt.getText().toString().contains(",")) {
tagsArray = addTagsEt.getText().toString().split("\s*,\s*");
tagsArr.addAll(Arrays.asList(tagsArray));
}
}
});
将onTextChanged函数更改为:
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (s.length() > 0) {
String str = s.toString();
int l = str.length() - str.replaceAll(",","").length();
if (l >= 10){
Toast.makeText(CreateJobTwoActivity.this, "Only 10 tags considered", Toast.LENGTH_SHORT).show();
String t = str.substring(0,start) + str.substring(start+count);
addTagsEt.setText(t);
addTagsEt.setSelection(start,start);
}
}
}