Insert new editText in a ListView without losing the data of the previous editText

0

I have a ListView of text fields (EditText) and I want that when inserting a new row to the list I do not lose the data that I inserted in the previous editText.

This is my EditTex layout:

    <EditText
        android:id="@+id/myEditText"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:drawablePadding="8dp"
        android:background="@android:color/transparent"
        android:layout_gravity="center_vertical"
        android:hint="@string/ingresa_codigo_participacion"
        android:textColorHint="@color/white"
        android:paddingLeft="11dp"
        android:paddingRight="11dp"
        android:singleLine="true"
        android:maxLines="1"
        android:lines="1"
        android:textCursorDrawable="@drawable/white_cursor_edittext"
        />

This is my adapter whose editText contains "addTextWatcher"

public class AddNewCodesAJEAdapter extends BaseAdapter {

    private Context context;
    private List<EditText> editTexts;

public AddNewCodesAJEAdapter(Context context){
    this.context = context;
    this.editTexts = new ArrayList<>();
}

public void refreshList(List<EditText> ets){
        editTexts = ets;
        notifyDataSetChanged();
}


@Override
public int getCount() {
    return editTexts.size();
}

@Override
public void notifyDataSetChanged() {
    super.notifyDataSetChanged();
}

@Override
public Object getItem(int position) {
    return editTexts.get(position);
}

@Override
public long getItemId(int position) {
    return 0;
}

@Override
public View getView(final int position, View convertView, ViewGroup parent) {


    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    convertView = inflater.inflate(R.layout.item_edittext_aje, parent, false);

            final EditText myEditText = convertView.findViewById(R.id.myEditText);
            final ImageView imgClearEdt = convertView.findViewById(R.id.imgClearEditText);

            imgClearEdt.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if(imgClearEdt.getTag().equals("0")){
                        myEditText.setText("");
                        myEditText.setEnabled(true);
                    }

                }
            });

            myEditText.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                    myEditText.setTextColor(ContextCompat.getColor(context,R.color.white));
                }

                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {

                    if(s.length()>0){
                        imgClearEdt.setVisibility(View.VISIBLE);
                    }else{
                        imgClearEdt.setVisibility(View.INVISIBLE);
                    }

                }

                @Override
                public void afterTextChanged(Editable et) {
                    if(s.length() == 7){
                        Toast.makeText(context, "calling web service", Toast.LENGTH_SHORT).show();
                        myEditText.setEnabled(false);
                    }
                }
            });

    return convertView;
  }
}

Specifically, what I would like to do is that by adding a new editText to the listView and if I have inserted data in the previous editText, it keeps its data when I invoke notifyDataSetChanged

    
asked by Jorge Requez 09.07.2018 в 23:07
source

0 answers