EditText loses content on scroll in ListView?

前端 未结 4 1640
日久生厌
日久生厌 2020-11-28 12:24

I have list item with EditText in it, I don\'t know how many items there will be. I have a problem when I enter some text in EditText, and then scr

4条回答
  •  粉色の甜心
    2020-11-28 13:05

    First, declare a String[] or List member variable (inside the class outside the getView()) for storing the input text from your EditText object, and record the text in addTextChangeListener() you set on the EditText object.

    Second, put your setText() after (not inside) the addTextChangeListener().

        viewHolder.editText.removeTextChangedListener(viewHolder.textWatcher);
    
        viewHolder.textWatcher = new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
            }
    
            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
            }
    
            @Override
            public void afterTextChanged(Editable editable) {
                mInputs[position] = editable.toString();            //record input
    
                viewHolder.editText.setSelection(viewHolder.editText.getText().length());       //set cursor to the end
            }
        };
    
        viewHolder.editText.addTextChangedListener(viewHolder.textWatcher);
        viewHolder.editText.setText(mInputs[position]);
    

    private class ViewHolder {
        EditText editText;
        TextWatcher textWatcher;
    
        public ViewHolder(View itemView) {
            editText = itemView.findViewById(R.id.main_editText);
        }
    }
    

提交回复
热议问题