Professional Documents
Culture Documents
Confeccionar un programa que permita administrar una agenda personal. Nuestra clave será el
nombre de la persona. La interfaz visual a implementar será similar a esta:
La interfaz visual a implementar y los Id de los
controles visuales son los siguientes:
EditText de tipo Plain Text (ID=et1, hint="Nombre de la persona", text="")
EditText de tipo Multiline Text (ID=et2, hint="datos")
Button (ID="button", onClick="grabar", text="GRABAR")
Button (ID="button2", onClick="recuperar", text="RECUPERAR")
public class MainActivity extends AppCompatActivity {
private EditText et1,et2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et1=(EditText)findViewById(R.id.et1);
et2=(EditText)findViewById(R.id.et2);
}
public void grabar(View v) {
String nombre=et1.getText().toString();
String datos=et2.getText().toString();
SharedPreferences pref=getSharedPreferences("agenda", Context.MODE_PRIVATE);
SharedPreferences.Editor ed=pref.edit();
ed.putString(nombre, datos);
ed.commit();
Toast.makeText(this,"Datos grabados", Toast.LENGTH_LONG).show();
}
public void recuperar(View v) {
String nombre=et1.getText().toString();
SharedPreferences prefe=getSharedPreferences("agenda", Context.MODE_PRIVATE);
String d=prefe.getString(nombre, "");
if (d.length()==0) {
Toast.makeText(this,"No existe dicho nombre en la agenda", Toast.LENGTH_LONG).show();
}
else {
et2.setText(d);
}
}
}
En el emulador podemos ver como ingresamos y recuperamos datos de la
agenda:
Almacenamiento de datos en un archivo de texto en la
memoria interna
Otra posibilidad de almacenar datos en nuestro dispositivo Android es el empleo
de un archivo de texto que se guardará en el almacenamiento interno del equipo
(la otro posibilidad es almacenarlo en una tarjeta SD Card)
Problema:
Definir para el Button la propiedad onClick con el valor "grabar" y la propiedad text con el valor
"Grabar".
El código fuente de la aplicación:
if (existe(archivos, "notas.txt"))
try {
InputStreamReader archivo = new InputStreamReader(
openFileInput("notas.txt"));
BufferedReader br = new BufferedReader(archivo);
String linea = br.readLine();
String todo = "";
while (linea != null) {
todo = todo + linea + "\n";
linea = br.readLine();
}
br.close();
archivo.close();
et1.setText(todo);
} catch (IOException e) {
}
}
private boolean existe(String[] archivos, String archbusca) {
for (int f = 0; f < archivos.length; f++)
if (archbusca.equals(archivos[f]))
return true;
return false;
}
public void grabar(View v) {
try {
OutputStreamWriter archivo = new OutputStreamWriter(openFileOutput(
"notas.txt", Activity.MODE_PRIVATE));
archivo.write(et1.getText().toString());
archivo.flush();
archivo.close();
} catch (IOException e) {
}
Toast t = Toast.makeText(this, "Los datos fueron grabados",
Toast.LENGTH_SHORT);
t.show();
finish();
}
}
Cada vez que ejecutemos el programa veremos las últimas notas guardadas:
Almacenamiento en una base de datos SQLite
1 - Carga de articulo.
2 - Consulta por el código.
3 - Consulta por la descripción.
4 - Borrado de un articulo ingresando su código.
5 - Modificación de la descripción y el precio.
Lo primero que haremos es crear una clase que herede de SQLiteOpenHelper. Esta clase nos permite crear la
base de datos y actualizar la estructura de tablas y datos iniciales.
Para crear una nueva clase desde Android Studio procedemos a presionar el botón derecho del mouse sobre la
carpeta que contienen todos los archivo java del proyecto y seleccionamos New - > Java Class:
En este diálogo ingresamos el nombre de nuestra clase, en nuestro
ejemplo la llamaremos AdminSQLiteOpenHelper:
Ya tenemos un nuevo archivo en nuestro proyecto:
Ahora tenemos que codificar esta clase que tiene por objetivo administrar la base de datos
que crearemos. Primero hacemos que nuestra clase herede de la clase SQLiteOpenHelper:
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
Es posible la presencia de algun error ya que la clase padre
SQLiteOpenHelper implementa constructores que tienen
parámetros, entonces tenemos que definir el constructor en
esta clase, para ello estando el cursor sobre el nombre de la
clase "AdminSQLiteOpenHelper" presionamos nuevamente las
teclas "ALT" y "Enter" y en el menú contextual que aparece
seleccionamos "Create constructor matching super".
Aparece un diálogo con todos los constructores que
implementa la clase padre (seleccionamos el que tiene tres
parámetros):
Crear clase en Android Studio
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table articulos(codigo int primary key,descripcion text,precio real)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
Hemos codificado en el método onCreate la creación de la tabla artículos con los campos código (que
es entero y clave primaria), descripción que es de tipo texto y precio es un valor real. El método
onCreate se ejecutará una única vez (Eventualmente si uno quiere modificar la estructura de la tabla
debemos hacerlo en el método onUpgrade).
Ahora implementemos la interfaz visual para resolver nuestro problema. Debemos crear en nuestro
archivo activity_main.xml la siguiente interfaz:
Como vemos disponemos tres EditText y cinco Button:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et1=(EditText)findViewById(R.id.et1);
et2=(EditText)findViewById(R.id.et2);
et3=(EditText)findViewById(R.id.et3);
}
public void alta(View v) {