Как избежать обновления значений edittext в Listview при прокрутке?

У меня есть просмотр списка с двумя текстовыми представлениями и редактированием текста. Я использовал пользовательский адаптер для заполнения списка (так же, как и месяц назад), поэтому я спрашиваю, как избежать обновления текстов редактирования при прокрутке списка, поскольку я хочу сохранить данные по каждому тексту редактирования. Поможет ли textwatcher каким-либо образом избежать обновления и сохранения? Если да, пожалуйста, помогите. Я включил мою модель и класс адаптера здесь:

Модельный класс:

public class InternalListModel {
    String no;
    String name;
    String value;
    public InternalListModel(String internNo, String internName) {
        // TODO Auto-generated constructor stub
        this.no=internNo;
        this.name=internName;
        value="";
    }
    public String getNo(){
        return no;
    }
    public String getName(){
        return name;
    }
    public String getValue(){
        return value;
    }
    public void setValue(String value){
        this.value=value;
    }
}

Пользовательский класс адаптера:

public class InternCustomAdapter extends ArrayAdapter<InternalListModel>
{
    private final List<InternalListModel> internnoname;
    private final Internal6 context;

    public InternCustomAdapter(Internal context,
            List<InternalListModel> internnoname) {
        super(context,R.layout.internlistdecor,internnoname);
        // TODO Auto-generated constructor stub
        this.context=context;
        this.internnoname=internnoname;
    }
    static class ViewHolder{
        protected TextView textview,textview1;
        protected EditText edittext;
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        final ViewHolder viewHolder;
        if(convertView ==null){
            LayoutInflater inflator = context.getLayoutInflater();
            convertView = inflator.inflate(R.layout.internlistdecor,null);
            viewHolder = new ViewHolder();
            viewHolder.textview=(TextView)convertView.findViewById(R.id.tvintNO);
            viewHolder.textview1=(TextView)convertView.findViewById(R.id.tvintName);
            viewHolder.edittext = (EditText)convertView.findViewById(R.id.etintValue);
            viewHolder.edittext.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  
                }
            });
            convertView.setTag(viewHolder);
            convertView.setTag(R.id.tvintNO, viewHolder.textview);
            convertView.setTag(R.id.tvintName, viewHolder.textview1);
            convertView.setTag(R.id.etintValue, viewHolder.edittext);
        }
        else
        {
            viewHolder = (ViewHolder) convertView.getTag();
        }
        viewHolder.textview.setText(internnoname.get(position).getNo());
        viewHolder.textview1.setText(internnoname.get(position).getName());
        viewHolder.edittext.setText(internnoname.get(position).getValue());
        return convertView;
    }

}

1 ответ

Вы можете установить введенный текст в поле значения для этой позиции (индекс)

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
    internnoname.get(position).setValue(s.toString());
}

Таким образом, даже когда представления перерабатываются, в зависимости от позиции, значение будет правильно установлено на EditTexView из-за кода ниже:

viewHolder.edittext.setText(internnoname.get(position).getValue());
Другие вопросы по тегам