В моем проекте Android мне пришлось добавить TextChangedListener (TextWatcher) в представление редактирования текста. И есть три части:
onTextChanged()
beforeTextChanged()
afterTextChanged()
Каковы различия этих трех? Я должен был осуществить поиск таблицы по ключевому слушателю, и для моего случая все эти три выглядели одинаково. Также они функционировали одинаково. Когда я ввожу часть названия продукта, таблица перерисовывается только теми продуктами, которые содержат введенный текст. Но я использовал часть afterTextChanged()
. Мой код:
EditProduct.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub
// System.out.println("onTextChanged"+s);
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
// System.out.println("beforeTextChanged"+s);
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
// System.out.println("afterTextChanged"+s);
String new_prx = s.toString();
System.out.println(s);
mini_productList = new ArrayList<Product>();
// mini_productList
int count = 0;
if (new_prx.equals("")) {
loadtableProducts(productList);
} else {
for (int i = 0; i < productList.size(); i++) {
if (productList.get(i).getDescription().toString()
.substring(0, (new_prx.length()))
.equalsIgnoreCase(new_prx)) {
mini_productList.add(productList.get(i));
count++;
}
}
loadtableProducts(mini_productList);
}
}
});
Так может кто-нибудь дать мне объяснение этих трех?