http://developer.android.com/intl/es/reference/android/widget/PopupMenu.html
En este tutorial le voy a mostrar la diferencia entre la utilización de Menu y el Menu que sale desde la fila llamado PopMenu
Antes de hacer este tuto les recomiendo que vean el tuto ListView Simple por que lo utilizaremos para cargar el listView
Otro tutorial que podríamos utilizar para las filas del listView es AlertDialog personalizado que perfectamente funcionaría. Aunque no necesariamente tiene que ser personalizado, puede ser un AlertDialog simple, común y corriente.
MainActivity.java (dentro la carpeta java)
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.PopupMenu;
import android.widget.Toast;
public class MainActivity extends ActionBarActivity {
ListView lista;
String[] personas = {
"pablo",
"ramiro",
"vilma",
"canela",
"tito",
"nicolas",
"maira",
"pepita",
"honguito"
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lista = (ListView) findViewById(R.id.listView1);
ArrayAdapter adaptador = new ArrayAdapter(this, android.R.layout.simple_list_item_1, personas);
lista.setAdapter(adaptador);
lista.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView adapterView, View view, int i, long l) {
Toast.makeText(getApplicationContext(), "posicion " + (i + 1) + personas[i], Toast.LENGTH_SHORT).show();
}
});
lista.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView parent, View view, int position, long id) {
PopupMenu popup = new PopupMenu(MainActivity.this, view);
popup.getMenuInflater().inflate(R.menu.menu_main, popup.getMenu());
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
//MENU FILA
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_eliminar:
Toast.makeText(MainActivity.this, "soy eliminar de la fila", Toast.LENGTH_LONG).show();
break;
}
return true;
}
//FIN MENU FILA
});
popup.show();
return true;
}
});
}
//MENU OCULTO //
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_eliminar:
Toast.makeText(MainActivity.this, "soy eliminar del menu oculto", Toast.LENGTH_LONG).show();
break;
}
return true;
}
//FIN MENU OCULTO//
}
activity_main.xml (dentro la carpeta res -> layout)
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <ListView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/listView1" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> </RelativeLayout>
menu_main.xml (dentro la carpeta res -> menu)
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity"> <item android:id="@+id/menu_eliminar" android:title="Eliminar" android:orderInCategory="100" app:showAsAction="never" /> </menu>
Tenemos que subir la versión de la 9 a la 11
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.1"
defaultConfig {
applicationId "com.tatoado.animator"
minSdkVersion 11
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.2'
}
Como hago para eleiminar un elemento de la listview a partir del popup y como obtengo todos los datos de la listview.
ResponderEliminarGracias
Buenas matias , quiciera saber como hacer que mi aplicación no entre en suspensión ya que esta reproduciendo audio y una vez se apaga el celular deja de reproducir
ResponderEliminar