当 ListView 中的 EditText 更改时获得通知
Get notified when EditText changes in ListView
我有一个 ListView
有多个 EditText
视图。如果这些 EditText
视图发生变化,我想在任何文本发生变化时收到通知,以便我可以在视图滚出屏幕之前保存它。我首先尝试实现 OnKeyListener
,但发现它并不总是适用于软键盘。然后我实现了TextWatcher
,但是在写afterTextChanged
方法的时候,我发现它只告诉你改变了什么文本,而不是它属于哪个EditText。
那么有什么方法可以检测文本何时发生变化而不管输入法如何,并且还可以知道文本是在哪个对象中发生变化的?
您需要实施自定义 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;
}
我有一个 ListView
有多个 EditText
视图。如果这些 EditText
视图发生变化,我想在任何文本发生变化时收到通知,以便我可以在视图滚出屏幕之前保存它。我首先尝试实现 OnKeyListener
,但发现它并不总是适用于软键盘。然后我实现了TextWatcher
,但是在写afterTextChanged
方法的时候,我发现它只告诉你改变了什么文本,而不是它属于哪个EditText。
那么有什么方法可以检测文本何时发生变化而不管输入法如何,并且还可以知道文本是在哪个对象中发生变化的?
您需要实施自定义 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;
}