No puedo escribir en EditText, desaparece cuando intento escribir algo, es porque se llama a getView () cuando modifico los datos

EDITAR

Encontré la razón por la cual se llama a getView () cuando intento editar algo, por lo que los datos del Adaptador de datos se cargan y mis cambios editados desaparecen.

EDITAR

i observó una cosa, si hay pocas filas en la vista de lista, entonces está bien, pero si hay muchas filas que la vista de lista no puede mostrar en la pantalla visible (la barra de desplazamiento parece desplazarse a otros registros), ¡entonces surge el problema! !

stoy trabajando en un proyecto donde hemos implementado un EDICIÓN EN LÍNEA usando ListView, es decir, los datos se pueden editar dentro de la vista de lista.

Tengo un xml definido para cada elemento / fila de ese ListView. Estoy usando Custom DataAdapter para vincular los datos con ListView.

Cuando cargo por primera vez esa actividad, se carga ListView, puedo editar los datos y funciona bien. Cuando se edita algo, los cambios se guardan en la base de datos SQLite, tengo un botón para este propósito.

Ahora el problema es que después de guardar los datos POR PRIMERA VEZ y cargar nuevamente la vista de lista, ya no puedo editar los datos. Cuando intento editar los datos, aparece el teclado y luego desaparece automáticamente y los DATOS ENTRADOS también desaparecen. Por favor, vea las capturas de pantalla.

¿Puede alguien ayudarme a resolver este problema?

my Clase de adaptador personalizado:

public class QuestionAdapter extends ArrayAdapter<QuestionEntity> {
      private ArrayList<QuestionEntity> items;
      private Context CurrentContext;
      private QuestionEntity CurrentItem;
      private Cursor    OptionsCursor;


    public QuestionAdapter(Context context,  ArrayList<QuestionEntity> items, Cursor curOptions) 
    {
        super(context, R.layout.grid_item, items);
        this.CurrentContext = context;
        this.items          = items;
        this.OptionsCursor  = curOptions;

    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) 
    {
        //verify that the items list is still valid since
        //the list may have been cleared during an update
        if ((items == null) || ((position + 1) > items.size()))
                return convertView; //Can't extract item

        CurrentItem = items.get(position);    

        if(convertView == null) 
        {
            LayoutInflater inflater = LayoutInflater.from(CurrentContext);
            convertView = inflater.inflate(R.layout.grid_item, null);
        }

        if (convertView != null) 
        {

            TextView txtQuestion = (TextView) convertView.findViewById(R.id.txtQuestion);
            txtQuestion.setText(CurrentItem.getTitle());

            Spinner cmbOptions = (Spinner)convertView.findViewById(R.id.cmbOptions);

            /*
             * Load the options from OptionsCursor
             */

            LoadOptions(cmbOptions);

            /*
             * Attach onItemClick event with cmbOptions 
             * When the user change the option we will populate the comments based on the option
             */

            cmbOptions.setOnItemSelectedListener(new OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) 
            {
                try
                {
                    //If MyCondition is true show msg to user.

                }
                catch(Exception ex)
                {
                    ex.toString();
                }

            }
            });

        }
        return convertView;

    }

    private void LoadOptions(Spinner iacOptions)
    {
        //Load data in the spinner using the OptionsCursor

    }

}

Respuestas a la pregunta(2)

Su respuesta a la pregunta