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