当 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;

}