在ListView中EditText更改时收到通知

时间:2015-02-18 07:42:19

标签: android android-edittext

我有一个ListView,其中有多个EditText次观看。如果这些EditText视图发生更改,我希望在任何文本中收到通知,以便我可以在视图滚动到屏幕之前保存它。我首先尝试实现OnKeyListener,但发现它并不总是适用于软键盘。然后我实现了TextWatcher,但在编写afterTextChanged方法时,我意识到它只会告诉您哪些文本已更改,而不是它所属的EditText。

那么有什么方法可以检测文本何时发生变化而不管输入方法如何,还能知道文本被更改的对象是什么?

1 个答案:

答案 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;

}