我有一个ListView
,其中有多个EditText
次观看。如果这些EditText
视图发生更改,我希望在任何文本中收到通知,以便我可以在视图滚动到屏幕之前保存它。我首先尝试实现OnKeyListener
,但发现它并不总是适用于软键盘。然后我实现了TextWatcher
,但在编写afterTextChanged
方法时,我意识到它只会告诉您哪些文本已更改,而不是它所属的EditText。
那么有什么方法可以检测文本何时发生变化而不管输入方法如何,还能知道文本被更改的对象是什么?
答案 0 :(得分:1)
您需要实现自定义ListAdapter
才能实现此目的。在getView
方法中,您实施了TextWatcher
。如下所示:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi;
vi = LayoutInflater.from(getContext());
v = vi.inflate(R.layout.itemlistrow, null);
}
EditText et = v.findViewById(R.id.your_textview_id);
et.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
return v;
}