![]() |
|
| Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
«
Tema Anterior
|
Siguiente tema
»
|
|
Herramientas |
|
#1
|
||||
|
||||
|
Problema ContextMenu, Listview y Dialog
EDITADO. La consulta a realizar ha cambiado.
Saludos. Estoy intentando hacer un Listview con ContextMenu y varias opciones en este. Una de ellas es la de editar el nombre de uno de los elementos del Listview desde un Dialog. El problema lo encuentro al intentar acceder a los datos del Listview desde el Dialog, ya que no sé cómo recuperar el item que ha sido seleccionado antes de mostrar el Dialog. Os dejo el código a ver si alguien puede echarme una mano : Dialogs tanto para editar como para añadir elemento nuevo : Código:
protected Dialog onCreateDialog(int id) {
switch (id) {
case DIALOGO_EDITAR:
// Primero preparamos el interior de la ventana de diálogo inflando su fichero XML
String infService = Context.LAYOUT_INFLATER_SERVICE;
LayoutInflater li =(LayoutInflater)getApplicationContext().getSystemService(infService);
// Inflamos el componente compuesto definido en el XML
View inflador = li.inflate(R.layout.ventana, null);
// Buscamos los componentes dentro del Diálogo
final TextView nombreEdit = (TextView) inflador.findViewById(R.id.textView1);
nombreEdit.setText("Hola que tal");
ventana = new AlertDialog.Builder(this);
ventana.setTitle("Editar Artículo");
// Asignamos el contenido dentro del diálogo (el que hemos inflado previamente)
ventana.setView(inflador);
// ¡¡ No se puede incluir un mensaje dentro de este tipo de diálogo!!!
ventana.setPositiveButton("Aceptar", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int boton) {
}
});
ventana.setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int boton) {
Toast.makeText(getApplicationContext(), "Has pulsado el botón 'Cancelar'", Toast.LENGTH_SHORT).show();
}
});
return ventana.create();
case DIALOGO_NUEVO:
// Primero preparamos el interior de la ventana de diálogo inflando su fichero XML
String infService1 = Context.LAYOUT_INFLATER_SERVICE;
LayoutInflater li1 =(LayoutInflater)getApplicationContext().getSystemService(infService1);
// Inflamos el componente compuesto definido en el XML
View inflador1 = li1.inflate(R.layout.ventana, null);
// Buscamos los componentes dentro del Diálogo
final TextView nombreEdit1 = (TextView) inflador1.findViewById(R.id.textView1);
ventana = new AlertDialog.Builder(this);
ventana.setTitle("Artículo Nuevo");
// Asignamos el contenido dentro del diálogo (el que hemos inflado previamente)
ventana.setView(inflador1);
// ¡¡ No se puede incluir un mensaje dentro de este tipo de diálogo!!!
ventana.setPositiveButton("Aceptar", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int boton) {
}
});
ventana.setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int boton) {
Toast.makeText(getApplicationContext(), "Has pulsado el botón 'Cancelar'", 1).show();
}
});
return ventana.create();
}
return null;
}
Código:
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
switch (item.getItemId()) {
case R.id.EditTextOp:
showDialog(DIALOGO_EDITAR);
return true;
case R.id.EliminarTextOp:
datos.remove(info.position);
((BaseAdapter) this.lv.getAdapter()).notifyDataSetChanged();
//this.datos.remove(info.position);
return true;
default:
return super.onContextItemSelected(item);
}
}
Código:
public class MainActivity extends Activity {
private static final int DIALOGO_EDITAR = 1;
private static final int DIALOGO_NUEVO = 2;
ArrayList<Articulo> datos = new ArrayList<Articulo>();
private ListView lv;
private AlertDialog.Builder ventana;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView) findViewById(R.id.lista1);
Articulo a = new Articulo("pan", false);
Articulo b = new Articulo("leche", false);
Articulo c = new Articulo("agua", false);
Articulo d = new Articulo("arroz", true);
Articulo e = new Articulo("pollo", false);
Articulo f = new Articulo("zumo", true);
datos.add(a);
datos.add(b);
datos.add(c);
datos.add(d);
datos.add(e);
datos.add(f);
// Creamos el Adaptador que se usa para mostrar las opciones del listado
final ArrayAdapter<Articulo> adaptador = new AdaptadorArticulos(this, datos);
// Asignamos el adaptador al ListActivity para que sepa cómo dibujar el listado de opciones
lv.setAdapter(adaptador);
registerForContextMenu(lv);
Última edición por Baltus Día 05/10/12 a las 16:42:25 |
|
|
|
#2
|
||||
|
||||
|
Bumpeo porque he editado el post para completar la consulta. A ver si alguien sabe cómo se realiza el acceso a datos que no consigo solucionar.
Gracias de antemano. |
| Respuesta |
Estás aquí
|
||||||
|
||||||
«
Tema Anterior
|
Siguiente tema
»
|
|
Hora actual: 17:18:03 (GMT +1)
HTCMania: líderes desde el 2007





