Вы находитесь на странице: 1из 10

7 - Control ListView

Introduccin:
El control ListView a diferencia del Spinner que se cierra luego de seleccionar un elemento
permanecen visibles varios elementos (se lo utiliza cuando hay que mostrar muchos
elementos); Si la lista no entra en el espacio que hemos fijado para el ListView nos permite
hacer scroll de los mismos. El control ListView se encuentra en la pestaa "Compositive".
Problema:
Disponer un ListView con los nombres de paises de sudamrica. Cuando se seleccione un
pas mostrar en un TextView la cantidad de habitantes del pas seleccionado.
La interfaz visual a implementar es la siguiente (primero disponemos un TextView
(llamado tv1) y un ListView (llamado listView1)):
Cdigo fuente:

package com.javaya.proyecto006;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends Activity {
private String[] paises = { "Argentina", "Chile", "Paraguay",
"Bolivia",
"Peru", "Ecuador", "Brasil", "Colombia",
"Venezuela", "Uruguay" };
private String[] habitantes = { "40000000", "17000000", "6500000",
"10000000", "30000000", "14000000", "183000000",
"44000000",
"29000000", "3500000" };
private TextView tv1;
private ListView lv1;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

tv1=(TextView)findViewById(R.id.tv1);
lv1 =(ListView)findViewById(R.id.listView1);
ArrayAdapter <String> adapter = new
ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, paises);
lv1.setAdapter(adapter);
lv1.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int
posicion, long id) {
tv1.setText("Poblacin de "+
lv1.getItemAtPosition(posicion) + " es "+ habitantes[posicion]);
}
});
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if
it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}

}



Conclusiones

8 - Control ImageButton

Introduccin:
Es una clase muy similar al listview llamada ImageButton que tiene la misma filosofa de manejo
con la diferencia que puede mostrar una imagen en su superficie.

Problema:
Disponer un objeto de la clase ImageButton que muestre una imagen de un telfono.
Cuando se presione mostrar en un control TextView el mensaje "Llamando".
Cdigo fuente:
package com.javaya.proyecto007;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends Activity {
private TextView tv1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

tv1=(TextView)findViewById(R.id.tv1);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is
present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}

//Este mtodo se ejecutar cuando se presione el ImageButton
public void llamar(View view) {
tv1.setText("Llamando");
}

}

Conclusin:


9 - Lanzar un segundo "Activity"
Introduccin:
Es muy comn que una aplicacin tenga ms de una ventana. Para implementar esto en
Android debemos plantear una segunda clase que tambin herede de la clase Activity
(tengamos en cuenta que cuando utilizamos ADT automticamente cuando creamos un
proyecto nos crea el archivo XML y java de la primer Activity); Vamos a ver en este
concepto los pasos que debemos dar para crear otro Activity y como activarlo desde el
Activity principal.
Problema:
Confeccionar un programa que muestre en la ventana principal un botn que al ser
presionado muestre otra ventana (Activity) mostrando un TextView con el nombre del
programador de la aplicacin y un botn para cerrar la ventana o actividad.
El cdigo fuente de la actividad principal queda:
package com.javaya.proyecto008;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is
present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}

public void lanzar(View view) {
Intent i = new Intent(this, AcercaDe.class );
startActivity(i);
}

}

El cdigo fuente de la actividad AcercaDe queda:
package com.javaya.proyecto008;


import android.app.Activity;
import android.os.Bundle;
import android.view.View;

public class AcercaDe extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.acercade);
}

public void cerrar(View view) {
finish();
}
}

Conclusin:

10 - Lanzar un segundo "Activity" y pasar parmetros.
Introduccin:
Un programa puede tener ms de una ventana representando cada ventana con una clase
que hereda de Activity.
Una situacin muy comn es que la primera ventana necesite enviar datos a la segunda para
que a partir de estos proceda a efectuar una accin.
Problema:
Confeccionar un programa que solicite el ingrese de una direccin de un sitio web y
seguidamente abrir una segunda ventana que muestre dicha pgina.

El cdigo fuente de esta Activity es:
package com.androidya.proyecto010;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;

public class MainActivity extends Activity {
private EditText et1;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

et1 = (EditText) findViewById(R.id.et1);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is
present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}

public void ejecutar(View view) {
Intent i = new Intent(this, Actividad2.class);
i.putExtra("direccion", et1.getText().toString());
startActivity(i);
}

}


Tenemos que crear el archivo Java donde dispondremos la funcionalidad de
la segunda ventana (Activity)
Creamos una nueva clase al proyecto desde el men contextual(presionamos
el botn derecho del mouse sobre el paquete com.androidya.proyecto010)
Al nombre de la clase la llamamos Actividad2 y debemos especificar que
hereda de la clase android.app.Activity
Ahora tenemos que modificar el archivo Java generado agregando del mtodo
onCreate con esto:

package com.androidya.proyecto010;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebView;

public class Actividad2 extends Activity {
private WebView webView1;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.actividad2);

webView1 = (WebView) findViewById(R.id.webView1);

Bundle bundle = getIntent().getExtras();
webView1.loadUrl("http://" + bundle.getString("direccion"));
}

public void finalizar(View view) {
finish();
}
}

Conclusin:

14 - Almacenamiento en una base de datos SQLite
Introduccin:
Una herramienta nativa de Android para almacenar datos en una base de datos llamada
SQLite. SQLite es una base de datos Open Source, es muy popular en muchos dispositivos
pequeos, como Android. Las ventajas que presenta utilizar SQLite es que no requiere
configuracin, no tiene un servidor de base de datos ejecutndose en un proceso separado y
es relativamente simple su empleo.
Problema:
Confeccionar un programa que permita almacenar los datos de votantes de una eleccin.
Crear la tabla votantes y definir los campos dni (documento de identidad), nombre del
votante, colegio donde vota y nmero de mesa donde vota.
El programa debe permitir:
1 - Carga de personas.
2 - Consulta por el dni (para saber donde vota)
3 - Borrado de personas
4 - Modificacin de datos.


En nuestro problema implementaremos una nueva clase llamada
AdminSQLiteOpenHelper que herede de la clase SQLiteOpenHelper:

package com.javaya.proyecto015;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

public class AdminSQLiteOpenHelper extends SQLiteOpenHelper {

public AdminSQLiteOpenHelper(Context context, String nombre,
CursorFactory factory, int version) {
super(context, nombre, factory, version);
}

@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table votantes(dni integer primary key, nombre
text, colegio text, nromesa integer)");
}

@Override
public void onUpgrade(SQLiteDatabase db, int versionAnte, int
versionNue) {
db.execSQL("drop table if exists votantes");
db.execSQL("create table votantes(dni integer primary key, nombre
text, colegio text, nromesa integer)");
}
}





Ahora veamos la otra clase que implementar las altas, bajas,
modificaciones y consultas:

package com.javaya.proyecto015;

import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {
private EditText et1, et2, et3, et4;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

et1 = (EditText) findViewById(R.id.editText1);
et2 = (EditText) findViewById(R.id.editText2);
et3 = (EditText) findViewById(R.id.editText3);
et4 = (EditText) findViewById(R.id.editText4);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is
present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}

public void alta(View v) {
AdminSQLiteOpenHelper admin = new AdminSQLiteOpenHelper(this,
"administracion", null, 1);
SQLiteDatabase bd = admin.getWritableDatabase();
String dni = et1.getText().toString();
String nombre = et2.getText().toString();
String colegio = et3.getText().toString();
String nromesa = et4.getText().toString();
ContentValues registro = new ContentValues();
registro.put("dni", dni);
registro.put("nombre", nombre);
registro.put("colegio", colegio);
registro.put("nromesa", nromesa);
bd.insert("votantes", null, registro);
bd.close();
et1.setText("");
et2.setText("");
et3.setText("");
et4.setText("");
Toast.makeText(this, "Se cargaron los datos de la persona",
Toast.LENGTH_SHORT).show();
}

public void consulta(View v) {
AdminSQLiteOpenHelper admin = new AdminSQLiteOpenHelper(this,
"administracion", null, 1);
SQLiteDatabase bd = admin.getWritableDatabase();
String dni = et1.getText().toString();
Cursor fila = bd.rawQuery(
"select nombre,colegio,nromesa from votantes where dni="
+ dni, null);
if (fila.moveToFirst()) {
et2.setText(fila.getString(0));
et3.setText(fila.getString(1));
et4.setText(fila.getString(2));
} else
Toast.makeText(this, "No existe una persona con dicho dni",
Toast.LENGTH_SHORT).show();
bd.close();

}

public void baja(View v) {
AdminSQLiteOpenHelper admin = new AdminSQLiteOpenHelper(this,
"administracion", null, 1);
SQLiteDatabase bd = admin.getWritableDatabase();
String dni = et1.getText().toString();
int cant = bd.delete("votantes", "dni=" + dni, null);
bd.close();
et1.setText("");
et2.setText("");
et3.setText("");
et4.setText("");
if (cant == 1)
Toast.makeText(this, "Se borr la persona con dicho
documento",
Toast.LENGTH_SHORT).show();
else
Toast.makeText(this, "No existe una persona con dicho
documento",
Toast.LENGTH_SHORT).show();
}

public void modificacion(View v) {
AdminSQLiteOpenHelper admin = new AdminSQLiteOpenHelper(this,
"administracion", null, 1);
SQLiteDatabase bd = admin.getWritableDatabase();
String dni = et1.getText().toString();
String nombre = et2.getText().toString();
String colegio = et3.getText().toString();
String nromesa = et4.getText().toString();
ContentValues registro = new ContentValues();
registro.put("nombre", nombre);
registro.put("colegio", colegio);
registro.put("nromesa", nromesa);
int cant = bd.update("votantes", registro, "dni=" + dni, null);
bd.close();
if (cant == 1)
Toast.makeText(this, "se modificaron los datos",
Toast.LENGTH_SHORT)
.show();
else
Toast.makeText(this, "no existe una persona con dicho
documento",
Toast.LENGTH_SHORT).show();
}

}




Conclusin:

Вам также может понравиться