Ir al contenido principal

BDate Parte 6 - Re-editando la clase Crear.java

Ya que tenemos listo nuestro ListView, nos hace falta agregarle datos a la base de datos, para ello volvemos  a editar la clase Crear.java y dejamos al método guardarArchivo() de la siguiente manera

private void guardarArchivo() {
  // TODO Auto-generated method stub

//deben de crear una instancia DBAdapter llamada myAdapBD, al inicio del codigo
//junto con los botones y los edittext de esta clase
//de lo contrario generara errores ya que no encontraria esa instancia
//Dicha instancia se inicializa en el metodo inicializar() de la clase Crear.java
//asi que mucho ojo con ese detalle 


  try {
   myAdapBD.abrir();
   myAdapBD.insertarNotas(titu, nota.getText().toString());
   myAdapBD.cerrar();
  } catch (SQLiteException se ) {
         Log.e(getClass().getSimpleName(), "No se ha podido guardar la nota");
        }
  /*
  try
  {
   
   if(estado.equals(Environment.MEDIA_MOUNTED))
   {
    File ruta = Environment.getExternalStorageDirectory();
    File archivo = new File(ruta, titu);
    OutputStreamWriter save = new OutputStreamWriter(new FileOutputStream(archivo));
    save.write(nota.getText().toString());
    save.close();
    
    myAdapBD.abrir();
    myAdapBD.insertarNotas(titu, nota.getText().toString());
    myAdapBD.cerrar();
    
   }
  }
  catch(Exception e)
  {
   Toast.makeText(this, "No se pudo guardar el archivo: "+titu, Toast.LENGTH_LONG).show();
  }*/



//  
 }
Como veran ya no creamos un archivo en la memoria externa del dispositivo, sino que toda la informacion la guardamos dentro de la base de datos que hemos creado.

Ademas hay que volver a tocar el método onClick(), esto para intentar hacerlo lo mas profesionalmente posible, le agregaremos un tipo de alerta, el cual se crea cuando se pincha sobre el botón bGuardar, el código queda de la siguiente manera
public void onClick(View v) {
  // TODO Auto-generated method stub
  switch(v.getId())
  {
  case R.id.bGuardar:
   titu = titulo.getText().toString();
   if(! titu.equals(""))
   {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage("Estas seguro de guardar la nota o deseas seguir editandola")
           .setCancelable(false)
           .setPositiveButton("Guardar", new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                guardarArchivo();//aqui se agrega el metodo 
                   Crear.this.finish();
               }
           })
           .setNegativeButton("Editar", new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                    dialog.cancel();
               }
           });
    AlertDialog alert = builder.create();
    alert.show();
   }
   else
   {
    Toast.makeText(getApplication(), "No has agregado un titulo a la nota \nLa nota no se puede guardar aun", Toast.LENGTH_LONG).show();
   }
   
   break;
  case R.id.bCancelar:
   finish();
   break;
  }
 }
En el caso de bGuardar, se comienza dandole un valor a la variable titu (la que almacena lógicamente el titulo de la nota), luego con un if preguntamos si el titulo esta vació, de ser así nos avisa con un Toast, de lo contrario genera un AlertDialog.Builder llamado builder, no explicare cada uno de los métodos que se utiliza para crear y utilizar un Objeto de dicha clase, ya que es muy simple de entender y de utilizar, mas adelante quizás lo personalicemos, pero por el momento nos sobra y basta con saber que se crea dicho dialogo, luego se crea una instancia AlertDialog llamada alert a la que se le asigna el dialogo (es decir builder.create() ), para terminar se muestra la alerta con el método show().


El botón bCancelar sigue igual, no se le hace ningún cambio.

Ahora lo que tenemos que volver a editar es el texto del botón bLeer y de bCrear, de nuestra clase principal (main.xml) y editar un poco la clase BDateActivity.java, para que no nos lleve a la clase Leer.java (en otras palabras tocaremos en método onClick()), sino que nos lleve a la clase NotasList.java,

El boton cambia de :
A:



Y el código de la siguiente manera:
public void onClick(View arg0) {
  // TODO Auto-generated method stub
  Intent i; 
  switch(arg0.getId())
  {
  case R.id.bCrearA:
   i = new Intent(BDateActivity.this, Crear.class);
   startActivity(i);
   break;
  case R.id.bLeerA:
   i = new Intent(BDateActivity.this, NotasList.class);
   startActivity(i);
   break;
  }
El cambio que le hemos hecho es minimo, simplemente hemos reemplazado de
 i = new Intent(BDateActivity.this, Leer.class)
a
 i = new Intent(BDateActivity.this, NotasList.class)

Bueno eso es todo por esta ocasión, mas adelante tocaremos nuevamente las clases DBAdapter.java y NotasList.java

Entradas populares de este blog

Northwind para Mysql y otras

Supongamos que necesitamos una base de datos para comenzar a hacer pruebas y a la vez necesitamos que esa base de datos contenga mucha información con la cual trabajar. En mis tiempos de universidad existía una base de datos que utilizábamos en los laboratorios con SQL Server y c# para mostrar los datos en algún formulario. El nombre era Northwind. El problema es que era solo para SQL Server, pero alguien en se dio a la tarea de exportar esa base de datos a MySql y es justo lo que te vengo a mostrar acá. Hace un tiempo atrás clone de los repositorios de Google Code   esa información (que como algunos de ustedes sabrá dejara de estar al servicio de todos en un tiempo). Modifique un poco la DB de Mysql para que se pudiera ejecutar el script sin ningún problema. Lo interesante de todo esto es que puedes utilizar los demás script para diferentes gestores de base de datos Se advierte que para poder usarlas adecuadamente hay que modificar los campos de tipo longblob y qu...

How to upload File from form data POST in Android with Retrofit 2

 The last day I explain how to upload a simple CSV file using node . And now I teach how to upload from android device. Get source code here:  GitHub This article is write in java... later I'll add the method for kotlin. The logic is not changed, only the format code. 1) Is necessary add the dependencies in gradle: module implementation 'com.google.code.gson:gson:2.8.6' // RETROFIT // implementation 'com.squareup.retrofit2:retrofit:2.6.2' implementation 'com.squareup.retrofit2:converter-gson:2.6.2' implementation 'com.squareup.retrofit2:converter-scalars:2.5.0' 2) Add permissions in AndroidManifest.xml and modified the application for work with network security policy <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> in applitacion add ...

Como encriptar AES con Node JS

  Puedes descargar el proyecto desde este enlace El otro día surgió una necesidad para encriptar contenido bajo el algoritmo AES y es la que te vengo a mostrar a continuación en la cual use Node para solventar mi necesidad. Pude haber usando cualquier lenguaje que me viniera en gana pero no quería instalar nada mas. Dependencias: NodeJS >= 12 Crypto-JS Aplicaciones recomendadas: Git bash Visual Studio Code Lo primero que necesitamos es tener una clave única (KEY) y un vector de inicialización (IV). Este ultimo no es necesario pero agrega un extra de seguridad a nuestro contenido. Para lo cual usaremos el bash de git para utilizar openssl KEY openssl rand -base64 24 IV openssl rand -base64 12 Ahora que ya tenemos estas 2 cadenas únicas. Podemos proceder a escribir nuestro código. npm init -y Luego hacemos una modificación en el package.json para que admita módulos "type": "module", Instalamos la dependencia de Crypto-JS npm i crypto-js --save Ahora importamos l...