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;
}
}