Autore Topic: Problema su onListItemClick su una ListFragment  (Letto 478 volte)

Offline ilprofugo

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Next
  • Play Store ID:
    Fabrizio Consalvi
Problema su onListItemClick su una ListFragment
« il: 02 Maggio 2013, 20:04:12 CEST »
+1
Ciao a tutti, sto cercando di realizzare la mia prima applicazione che vuole essere un tributo a Tomas Milian, sono riuscito a realizzare una prima versione  facendo una semplice listviev formata da una ImageView (la locandina), e tre TextView (la frase, la durata del file audio e il titolo del film). Quando clicco sulla frase del film mi fa sentire l’audio associato e ho gestito anche tutte le fasi del media player, per cui non ho avuto grossi problemi.

Andando avanti mi sono accorto di avere troppi file perciò avrei creato una lista di frasi troppo lunghe, quindi ho preferito fare un’app con le tab dell’action bar usando la libreria Sherlock (un tab per ogni film) e ho implementato lo swipe tra un tab e l’altro, fin qui tutto funziona alla perfezione.
Il mio problema è che per fare questo ho usato i fragment e qui mi sono bloccato da vari giorni. Ho letto le due guide presenti sul forum e la documentazione ufficiale ma non sono riuscito ad implementare l’onListItemClick sulle frasi dei film.

Di seguito metto il codice della mia SherlockListFragment e della SherlockFragmentActivity principale, ho la sensazione di non aver capito bene come funzionano questi fragment ma soprattutto come passare i dati dalla listfragment alla fragment activity.

Codice (Java): [Seleziona]
public class AssassinioSulTevereFragment extends SherlockListFragment


        // Riferimento all'activity di Callback.
        OnMyListFragmentItemClick mListener;

// Interfaccia di Callback per comunicare con l'activity che contiene il Fragment.
        public static interface OnMyListFragmentItemClick {
               
// This method will be invoked when an item in the ListFragment is clicked
                public void onListFragmentItemClick(int position);
        }

// A callback function, executed when this fragment is attached to an activity   
        @Override
        public void onAttach(Activity activity) {
                super.onAttach(activity);
// Get a reference to the parent Activity.
                try {                  
// This statement ensures that the hosting activity implements OnMyListFragmentItemClick
                        mListener = (OnMyListFragmentItemClick) activity;
                } catch (ClassCastException e) {
                        throw new ClassCastException(activity.toString()
                                        + " must implement OnMyListFragmentItemClick");
                }
        }




        @Override
        public void onListItemClick(ListView l, View v, int position, long id) {
                // super.onListItemClick(l, v, position, id);
                // Richiamo il metodo di callback

// frasiaudio è il mio array di file audio

                 mListener.onListFragmentItemClick(frasiaudio[position]);
        }

Codice (Java): [Seleziona]
public class MainActivity extends SherlockFragmentActivity implements AssassinioSulTevereFragment.OnMyListFragmentItemClick

        Context context;

        /** This method will be executed when the user clicks on an item in the listview */
        @Override
         public void onListFragmentItemClick(int position) {             
   
                if (audio != null) {
                if(audio.isPlaying()){
                        audio.stop();
                }
                audio.release();
                audio = null;
                        }
       
                audio = MediaPlayer.create(context, position);
                playAudio();

         }

Praticamente graficamente funziona tutto, ma quando clicco su qualsiasi elemento non succede niente, non capisco bene quale sia l’errore, se è un problema del context che passo al media player o di dati passati dalla listfragment, ho provato a creare anche un Toast invece di far partire il media player ma i risultati sono sempre gli stessi .
Vi sarei grato se mi potete dire dove posso trovare documentazione utile per capire dove sbaglio o come risolvere questo problema.

Grazie
Fabrizio

Offline ilprofugo

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Next
  • Play Store ID:
    Fabrizio Consalvi
Re:Problema su onListItemClick su una ListFragment
« Risposta #1 il: 11 Luglio 2013, 09:41:13 CEST »
0
Scrivo come ho risolto, magari può essere utile anche a qualcun altro. Qui il problema non era nel codice ma nell'xml dove non avevo messo l'attributo android:focusable="false" e android:focusableInTouchMode="false"

Inviato dal mio GT-S5570 con Tapatalk 2