Autore Topic: Longpress LIstview  (Letto 931 volte)

Offline max246

  • Utente junior
  • **
  • Post: 73
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    G1
  • Play Store ID:
    Christian
Longpress LIstview
« il: 15 Settembre 2010, 16:06:31 CEST »
0
Vorrei far visualizzare un menu all'azione longpress della mia Listview, ma questa operazione non riesco a fargliela eseguire!

La mia listview ha già un'azione quando fa onclick, ovvero un toast, ma se viene premuto a lungo dovrebbe eseguirmi il contextmenu ( se non erro si usa questo tipo di menu).

Qualcuno sa spiegarmi o darmi un esempio? Magari non possono convivere onclick e longpress? :S

Ho provato pure questa versione:
Codice (Java): [Seleziona]
final ListView lv1=(ListView)findViewById(R.id.listaSegnalazioni);
        registerForContextMenu(lv1);



e questa

Codice (Java): [Seleziona]
final ListView lv1=(ListView)findViewById(R.id.listaSegnalazioni);
        registerForContextMenu(lv1);
       /* lv1.setTextFilterEnabled(true);
        lv1.setOnItemLongClickListener( new AdapterView.OnItemLongClickListener
(){
                @Override
                public boolean onItemLongClick(AdapterView<?> av, View v, int
pos, long id) {
                       // onLongListItemClick(v,pos,id);
                    System.out.println("aaa");
                    return false;
        }

});

Il print lo vedo dai log, ma non mi apre nemmeno un toast...
« Ultima modifica: 15 Settembre 2010, 16:52:46 CEST da JD, Reason: Usate i bbcode java e xml!! xD »

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:Longpress LIstview
« Risposta #1 il: 15 Settembre 2010, 16:52:26 CEST »
0
Prova così:
Codice (Java): [Seleziona]
        private final static int UPDATE_MENU_OPTION = 1;
        private final static int DELETE_MENU_OPTION = 2;
        private final static int TRUNCATE_MENU_OPTION = 3;

Codice (Java): [Seleziona]
        //Nella on create
        ListView lv1=(ListView)findViewById(R.id.listaSegnalazioni);
        registerForContextMenu(lv1);

Codice (Java): [Seleziona]
        @Override
        public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
                int group = Menu.FIRST;
                menu.add(group, UPDATE_MENU_OPTION, Menu.FIRST, getString(R.string.edit));
                menu.add(group, DELETE_MENU_OPTION, Menu.FIRST + 1, getString(R.string.delete));
                menu.add(group, TRUNCATE_MENU_OPTION, Menu.FIRST + 2, getString(R.string.truncate));
        }

        @Override
        public boolean onContextItemSelected(MenuItem item) {
                AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
                final long examId = info.id;

                switch (item.getItemId()) {

                case UPDATE_MENU_OPTION:
                        // aggiorna
                        return true;

                case DELETE_MENU_OPTION:
                        //cancella
                        return true;

                case TRUNCATE_MENU_OPTION:
                        //svuota
                        return true;

                default:
                        return super.onContextItemSelected(item);
                }
        }

PS
Quando posti del codice usa i pulsanti e
« Ultima modifica: 15 Settembre 2010, 16:55:48 CEST da JD »
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline max246

  • Utente junior
  • **
  • Post: 73
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    G1
  • Play Store ID:
    Christian
Re:Longpress LIstview
« Risposta #2 il: 11 Ottobre 2010, 19:33:49 CEST »
0
Per ricavare la posizione della view? :P ho guardato un po .. ma con l'onclick mi ritornava l'int di position qua non c'è un metodo della view :S

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:Longpress LIstview
« Risposta #3 il: 11 Ottobre 2010, 20:26:27 CEST »
0
Nel codice che ti ho postato:
Codice (Java): [Seleziona]
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
final long examId = info.id;

info.id ti restituisce l'id, info.position la position ;)
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline max246

  • Utente junior
  • **
  • Post: 73
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    G1
  • Play Store ID:
    Christian
Re:Longpress LIstview
« Risposta #4 il: 11 Ottobre 2010, 20:32:23 CEST »
0
Ma non della posizione del menu context ma dell'elemento in Onlongpress, mi serve perchè devo ricavare un dato per far visualizzare determinate voci..

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:Longpress LIstview
« Risposta #5 il: 11 Ottobre 2010, 20:53:35 CEST »
0
Scusa, ma intendi la OnItemLongClickListener? Se la risposta è sì, nella onItemLongClick ti ritrovi un intero per la posizione e un long per l'id.
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline max246

  • Utente junior
  • **
  • Post: 73
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    G1
  • Play Store ID:
    Christian
Re:Longpress LIstview
« Risposta #6 il: 16 Ottobre 2010, 10:00:34 CEST »
0
Nel

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

quando faccio

final ListView lv1 = (ListView) v;
        System.out.println(lv1.getSelectedItemPosition());

mi ritorna -1 , in qualsiasi posizione mi trovo nella Listview

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:Longpress LIstview
« Risposta #7 il: 16 Ottobre 2010, 10:06:03 CEST »
0
Hai guardato il codice che ho postato nella risposta #1? Nella onCreateContextMenu non devi prendere nessuna posizione, devi solo assegnare le voci da inserire nel context menu.

Rileggi bene il codice: Longpress LIstview - Android Developers Italia
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline max246

  • Utente junior
  • **
  • Post: 73
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    G1
  • Play Store ID:
    Christian
Re:Longpress LIstview
« Risposta #8 il: 16 Ottobre 2010, 10:14:22 CEST »
0
ok, ma io volevo fare un "contextmenu" dinamico.
Ti spiego meglio: questa contextmenu ha due voci: "Invia sms" e "Cancella", il cancella è abilitato solo se la voce è stata creata da lui e questo dato è contenuto nella posizione dell'item premuto.

Volendo posso fargli fare il controllo dopo quando lo preme.. pero non è graficamente bello :)

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:Longpress LIstview
« Risposta #9 il: 16 Ottobre 2010, 10:21:53 CEST »
0
ok, ma io volevo fare un "contextmenu" dinamico.
Ti spiego meglio: questa contextmenu ha due voci: "Invia sms" e "Cancella", il cancella è abilitato solo se la voce è stata creata da lui e questo dato è contenuto nella posizione dell'item premuto.

Volendo posso fargli fare il controllo dopo quando lo preme.. pero non è graficamente bello :)
Metti un if nell'oncreate del context menu no?
Codice (Java): [Seleziona]
if(quelloCheVuoi){
    menu.add(blablabla)
}
Postate il LogCat LogCat LogCat LogCat LogCat

Offline max246

  • Utente junior
  • **
  • Post: 73
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    G1
  • Play Store ID:
    Christian
Re:Longpress LIstview
« Risposta #10 il: 16 Ottobre 2010, 10:24:27 CEST »
0
Metti un if nell'oncreate del context menu no?
Codice (Java): [Seleziona]
if(quelloCheVuoi){
    menu.add(blablabla)
}
L'ho fatto ma mi serve l'oggetto della Listview!!!!!
Devo sapere quale posizione è stato fatto il longpress cosi poi da ricavare l'oggetto della listview poi fare l'if....

Offline max246

  • Utente junior
  • **
  • Post: 73
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    G1
  • Play Store ID:
    Christian
Re:Longpress LIstview
« Risposta #11 il: 16 Ottobre 2010, 10:39:54 CEST »
0
Ok risolto con "info.position" non pensavo che riusciva a passare tramite l'oggetto Menu la posizione selezionata.

Scusa per la mia ignoranza :)