Está en la página 1de 5

!"#$%&'&%() + ,-.

#$/0')1- /$ 2/3%405-

En nuestia aplicacion ya poseemos la capaciuau ue listai e ingiesai alumnos en
nuestia aplicacion.

vamos ahoia a piepaiainos paia mouificai los uatos uel alumno y eliminai un
alumno.

Empezamos con la eliminacion ue un alumno ue nuestia lista, paia eso vamos a
cieai un mtouo en nuestio BA0 que elimina un alumno el cual es pasauo como
aigumento:

public void eliminar(Alumno alumno) {
String[] args = {alumno.getId().toString()};
getWritableDatabase().delete("Alumnos", "id=?", args);

}

Cunuo vamos a invocai ese mtouo.

vamos a pensai en la usabiliuau ue nuestia aplicacion. Cuanuo hacemos clic en un
item ue la lista ue alumnos, nosotios seiemos ie uiieccionauos a un foimulaiio uel
iegistio paia hacei la mouificacion iespectiva uel alumno seleccionauo.

Noimalmente en sistemas opeiaciones un clic simple en un item ue una pantalla
significa la seleccion ue un item. Cuanuo ueseamos otias opciones ue acciones en
un item noimalmente lo que hacemos es hacei clic en el item con un boton uiiecto
y espeiamos que el men ue opciones apaiezca paia pouei seleccionai la accion
que ueseamos.

En Anuioiu no tenemos un boton uiiectamente paia ese iol, peio, si tenemos el
clic laigo. Pouemos hacei que con el clic laigo en un item se piouuzca el
lanzamiento ue un men ue opciones semejante a los uems sistemas
mencionauos anteiioimente. El uetalle es que las opciones uisponibles pueuen
vaiiai en funcion uel item seleccionauo, uebiuo a ese hecho a este tipo ue men en
Anuioiu se le llama Nen ue Contexto o Context Nenu.

En Anuioiu tenemos un Nen ue Contexto. En el pouemos tiatai un item
especifico, abiienuo un men exclusivo paia este.

Paia avisai a Anuioiu ue que queiemos que al hacei clic laigo en un Listview que
contiene una lista se piouuzca el lanzamiento ue un men contextual. vamos
entonces a iegistiai nuestia lista:


public class ListaAlumnos extends Activity {


private ListView lista;
private Alumno alumno;

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



lista = (ListView) findViewById(R.id.lista);

registerForContextMenu(lista);


Nas cuales seiian los items que apaieceiian en el men ue contexto cuanuo
hacemos clic en la lista.

Cuanuo hacemos clic laigo en una view iegistiaua paia Nenu ue Contexto, Anuioiu
invoca al mtouo !"#$%&'%#!"'%(')%"* ue la +,'-.-'/ que se esta ejecutanuo. Paia
peisonalizai el conteniuo uel men ue contexto utilizaiemos ese mtouo ue
maneia muy paieciua con la cieacion ue items ue 0ptions Nenu:

@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {

menu.add("Matricular");
menu.add("Enviar un SMS");
menu.add("Visitar Sitio Web");
menu.add("Eliminar");
menu.add("Ver en el mapa");
menu.add("Enviar un email");


super.onCreateContextMenu(menu, v, menuInfo);
}


En una misma pgina vaiias views pueuen sei iegistiauas paia tenei Nens ue
Contexto. En nuestio caso solo necesitamos cieai men uifeienciauos paia una ue
ellas. Pensanuo en ese pioblema es que el mtouo !"#$%&'%#!"'%(')%"* iecibe una
view pasaua como aigumento. Pouemos veiificai que view fue cieaua y
piogiamticamente cieai mens uifeientes en funcion ue la view seleccionaua.

El compoitamiento uel clic en el item uel men ue contexto pueue sei cieauo en la
cieacion ue uicho item. Cuanuo agiegamos piogiamticamente un item en el men
ue contexto se ciea un NenuItem al cual pouemos asociai un Listenei:


menu.add("Enviar un SMS");
menu.add("Visitar Sitio Web");
MenuItem eliminar = menu.add("Eliminar");
eliminar.setOnMenuItemClickListener(new
OnMenuItemClickListener() {

@Override
public boolean onMenuItemClick(MenuItem item) {
AlumnoDAO dao = new
AlumnoDAO(ListaAlumnos.this);
dao.eliminar(alumno);
cargarLista();
dao.close();
return false;
}


});
menu.add("Ver en el mapa");
menu.add("Enviar un email");


Pouemos tambin optai poi la cieacion ue uos items uel men, a tiavs uel xml.
Pouiiamos hacei el mismo tiabajo como vimos con )%"*0"12&'%$, ueclaianuo un
XNL con sus opciones, colocnuole a caua uno un iu en paiticulai:

!"#$% '()*+,-./012/ (-3,4+-5./6789:/";
!$(-6 #$%-*<=-4),+4./>77?<@@*3>($=*1=-4),+413,$@=?A@)(*@=-4),+4/ ;
!+7($
=-4),+4<+4./BC+4@$=7)+36%=)/
=-4),+4<7+7%(./D=7)+36%=)/@;
!+7($
=-4),+4<+4./BC+4@*$*/
=-4),+4<7+7%(./E-'+=) FDF/@;
!+7($
=-4),+4<+4./BC+4@$=?=/
=-4),+4<7+7%(./G() (- (% D=?=/@;
!+7($
=-4),+4<+4./BC+4@*+7(/
=-4),+4<7+7%(./H) = F+7(/@;
!+7($
=-4),+4<+4./BC+4@(%+$+-=)/
=-4),+4<7+7%(./E%+$+-=)/@;
!+7($
=-4),+4<+4./BC+4@($=+%/
=-4),+4<7+7%(./E-'+=) E9$=+%/@;
!@$(-6;


En !"#$%&'%#!"'%(')%"* solo tenemos que hacei tambin
3%')%"*0"12&'%$456-"12&'%4768%"*9,!"'%('!: 8%"*56

Paia pouei tiabajai con el clic en un item uel men ue contexto tenemos que
sobiesciibii el mtouo !"#!"'%('0'%8<%2%,'%= y basauo en el iu que tenemos paia
el item en el men pouemos tenei un compoitamiento uifeienciauo.


BI'())+4(
?6J%+3 J,,%(=- ,-K,-7(#7H7($F(%(37(4LD(-6H7($ +7($M N
*O+73> L+7($15(7H7($H4LMM N
3=*( P1+414(%(7=)<
@@QQQR6S =%6$-,"""
J)(=AT
U

)(76)- *6?()1,-K,-7(#7H7($F(%(37(4L+7($MT
U


El pioblema en el caso ue la eleccion es que no sabemos cual item ue la lista fue
seleccionauo cuanuo el men ue contexto apaiece.

vamos a uescubiii que alumno fue seleccionauo paia tomai accion.

Sabemos que el usuaiio hizo un clic laigo en un item ue Listview paia uispaiai la
cieacion uel Nenu ue contexto, entonces, pouemos mouificai el
>"0'%8?!"3#2-,@?-A'%"%$ paia pouei guaiuai el alumno seleccionauo en un
atiibuto ue nuestio ListaAlumnosActivity. En el mtouo onCieate ue
ListaAlumnosActivity:

lista.setOnItemLongClickListener(new OnItemLongClickListener() {



@Override
public boolean onItemLongClick(AdapterView<?> adapter,
View view,
int position, long id) {
alumno = (Alumno)adapter.getItemAtPosition(position);

return false;
}

});


0bseive que es impoitante iecaigai la lista, paia que el elemento eliminauo no
apaiezca en la pantalla.

Siguienuo la misma filosofia estuuiaua, vamos a buscai poi iu ("iu=.") paia pouei
hacei lo iequeiiuo:



String[] args = {alumno.getId().toString()};
Cursor c = getWritableDatabase().query(TABLA, COLS, "id=?", args,
null, null, null);

Ahoia solo basta moveinos al piimei iesultauo y poblai un nuevo alumno con sus
uatos:

31$,'(V,W+)*7LMT

X%6$-, =%6$-, . -(O X%6$-,LMT
=%6$-,1*(7H4L315(7Y,-5L2MMT
=%6$-,1*(7Z,$J)(L315(7F7)+-5L0MMT
=%6$-,1*(7V(%(8,-,L315(7F7)+-5L[MMT
=%6$-,1*(7\+)(33+,-L315(7F7)+-5L]MMT
=%6$-,1*(7F+7(L315(7F7)+-5L^MMT
=%6$-,1*(7Z,7=L315(7\,6J%(L_MMT
=%6$-,1*(7W,7,L315(7F7)+-5L`MMT

313%,*(LMT

Este couigo pueue estai en nuestio BA0, en un mtouo como
5(7X%6$-,a,)H4LY,-5 +4M. Como es comn poblamos una entiuau, a tiavs, ue
los uatos auquiiiuos en el cuisoi, pueue sei inteiesante aislai este couigo en un
mtouo auxiliai, asi es posible tambin paia geneiai un K,-7(-7G=%6(* a paitii
ue un X%6-, y evitai iepeticiones.

También podría gustarte