I do not know how to edit with an SQL Lite base on Android

0

I am trying to make an application in which one of the sections I have done an "Edit" button which I want to edit a "recipe" of the database. I have tried and I do not know very well how to do it (I am learning). Haber if someone gives me some light. Thank you very much.

//Copio los métodos donde creo que esta el error.
// MainActivity.java
@Override
public void onClick(View v) {
    // Acciones de cada boton
    switch (v.getId()) {
        case R.id.btnCrear:
            // Insertamos un nuevo elemento en la base de datos
            db.insertar(editNombre.getText().toString(), editReceta.getText().toString());

            // Actualizamos la lista de recetas
            lista = db.getComments();
            // Actualizamos el adapter y lo asociamos de nuevo al spinner
            spinnerAdapter = new ArrayAdapter(this, android.R.layout.simple_spinner_dropdown_item, lista);
            spinRecetas.setAdapter(spinnerAdapter);

            // Limpiamos el formulario
            editNombre.setText("");
            editReceta.setText("");

            break;
        case R.id.btnVer:
            // Si hay alguna receta seleccionada mostramos sus valores en la parte inferior
            if (c != null) {
                txtNombre.setText(c.getNombre());
                txtReceta.setText(c.getReceta());
            }
            break;

        case R.id.btnEliminar:
            // Si hay alguna receta seleccionada lo borramos de la base de datos y actualizamos el spinner
            if (c != null) {
                db.borrar(c.getId());
                lista = db.getComments();
                spinnerAdapter = new ArrayAdapter(this, android.R.layout.simple_spinner_dropdown_item, lista);
                spinRecetas.setAdapter(spinnerAdapter);

                // Limpiamos los datos del panel inferior
                txtNombre.setText("");
                txtReceta.setText("");

                // Eliminamos la receta actual puesto que ya no existe en base de datos
                c = null;
            }
            break;
        case R.id.btnEditar: // Aqui es donde tengo el problema. Los demás case sí funcionan.
            // Si hay alguna receta seleccionada permitimos su modificación
            if(c!=null){
                editNombre.setText(txtNombre.getText());
                editReceta.setText(txtReceta.getText());
               btnCrear.setEnabled(false);
               /*if(){ //No se que condición utilizar
                   db.actualizar(c.getId(),editNombre.getText().toString(),editReceta.getText().toString());
                   btnCrear.setEnabled(true);
               }*/


            }
            break;
    }
}

//MyOpenHelper.java
// Insertar una nueva receta
 public void insertar(String nombre, String receta){
    ContentValues cv = new ContentValues();
    cv.put("usuario", nombre);
    cv.put("receta",receta);
    db.insert("recetas",null,cv);
}

// Borrar una receta a partir de su id
public void borrar(int id){
    String[] args = new String[]{
            String.valueOf(id)
    };
    db.delete("recetas","_id=?",args);
}

// Actualizar una receta 
public void actualizar(int id, String nombre, String receta){
    String[] args = new String[]{
            String.valueOf(id)
    };
    ContentValues cv = new ContentValues();
    cv.put("usuario",nombre);
    cv.put("receta",receta);
    db.update("recetas",cv,"_id=?",args);
}

//Obtener la lista de recetas en la base de datos
public ArrayList<Receta> getComments(){
    //Creamos el cursor
    ArrayList<Receta> lista = new ArrayList<Receta>();
    Cursor c = db.rawQuery("select _id, usuario, receta from recetas",null);
    if(c!=null && c.getCount()>0){
        c.moveToFirst();
        do{
            // Asignamos el valor en nuestras variables para crear un nuevo objeto Receta
            String usuario = c.getString(c.getColumnIndex("usuario"));
            String receta = c.getString(c.getColumnIndex("receta"));
            int id=c.getInt(c.getColumnIndex("_id"));
            // Nueva receta
            Receta com = new Receta(id,usuario,receta);
            // Añadimos la receta a la lista
            lista.add(com);
        }while(c.moveToNext());
    }
    // Cerramos el cursor
    c.close();
    return lista;
}

}

    
asked by Antonio 24.11.2018 в 12:21
source

0 answers