Aller au contenu

Récupérer des variables de classe dans un menu


Xaz

Recommended Posts

Bonjour,

J'aurais besoin de votre aide concernant un menu que j'ai créé.

J'ai plusieurs activity qui extends toutes de ManuApp ma classe de déclaration du menu.

J'aimerais pouvoir au clique de l'utilisateur sur un item du menu récupérer une variable de classe contenu dans l'activity qui a appelé le menu, sachant que chaque activity est différente.

Ceci pour pouvoir implémenter une méthode de tri de litview au clic sur le menu.

Je m'explique:

J'ai une classe qui renvoi une liste de messages en fonction d'une requête à un serveur. J'affiche cette liste dans une listview avec un adapter personnalisé.

J'ai créé un menu Trierpar et deux sous menus Nom et Date. J'aimerais que quand l'utilisateur clique sur le sous menu Nom, la listview et donc l'arraylist qu'elle affiche soit trier par nom.

Merci d'avance pour toutes vos réponses, votre aide m'est précieuse!

Lien vers le commentaire
Partager sur d’autres sites

Je me réponds, j'ai trouvé une solution pour récupérer des variables d'une classe dans lequel le menu est appelé:

public abstract class MenuApp extends Activity {

private final static int MENU_RECHERCHE = 1;
private final static int MENU_CONFIGURATION = 2;
private final static int MENU_TRIER = 3;
private final static int MENU_TRIER_NOM = 3;
private final static int SOUMENU_NOM = 3000;
private final static int SOUMENU_DATE = 3001;
Context context = this;
ProgressDialog dialog;
String message = "Chargement de la page";
Class<ContactSourceResult> contacts = ContactSourceResult.class;
Class<? extends Context> locale;
ContactSourceResult Contactsource; 

ArrayList<Contacts> listeTri = new ArrayList<Contacts>();

	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.principale); 
        dialog = new ProgressDialog(context);
        dialog.setMessage(message);
        locale = context.getClass();
        Contactsource = new ContactSourceResult();

    }

    public boolean onCreateOptionsMenu(android.view.Menu menu) {

        menu.add(0, MENU_RECHERCHE, Menu.NONE, "Nouvelle Recherche").setIcon(R.drawable.menu);
        menu.add(1, MENU_CONFIGURATION, Menu.NONE, "Configuration").setIcon(R.drawable.config);

        if(locale == contacts || locale == web){
	        menu.add(3, MENU_TRIER_NOM, Menu.NONE, "Trier par Nom").setIcon(R.drawable.tri);
	    }
        if(locale == messages || locale == images || locale == videos || locale == mails){
        	SubMenu sousmenu = menu.addSubMenu(3, MENU_TRIER, Menu.NONE, "Trier par").setIcon(R.drawable.tri);
	        sousmenu.add(0, SOUMENU_NOM, Menu.NONE, "Nom");
	       	sousmenu.add(0, SOUMENU_DATE, Menu.NONE, "Date");
            sousmenu.setHeaderIcon(R.drawable.tri);
        }

        return true;
     }

     public boolean onOptionsItemSelected(MenuItem item) {

         switch (item.getItemId()) {

         	case MENU_RECHERCHE:

       			dialog.show();
       			new Thread(new Runnable() {
       				@Override
       				public void run() {
       					Intent intent1 = new Intent();
       					intent1.setClass(context, UnifiedSearch.class);
       					startActivity(intent1);

       					dialog.dismiss();
       				}
       			}).start();        	

				break;

         	case MENU_CONFIGURATION:

       			dialog.show();

       			new Thread(new Runnable() {
       				@Override
       				public void run() {
       					Intent intent1 = new Intent();
       					intent1.setClass(context, UnifiedSearch.class);
       					startActivity(intent1);

       					dialog.dismiss();
       				}
       			}).start();     
         		break;

         	case SOUMENU_NOM:

         		dialog.show();
         		new Thread(new Runnable() {
					@Override
        			public void run() {

        				}

        				runOnUiThread(new Runnable() {

							}

        		         });

        				dialog.dismiss();

        			}
        		}).start();
         		break;

         	case SOUMENU_DATE:

       			dialog.show();

       			new Thread(new Runnable() {
       				@Override
       				public void run() {
       					Intent intent1 = new Intent();
       					intent1.setClass(context, UnifiedSearch.class);
       					startActivity(intent1);

       					dialog.dismiss();
       				}
       			}).start();     
         		break;

         	case MENU_TRIER_NOM:
         		dialog.show();
         		new Thread(new Runnable() {
					@Override
        			public void run() {

        				if (locale == contacts){
        					listeTri = Contactsource.getListReponseSource();
        					Collections.sort(listeTri);
        				}

        				runOnUiThread(new Runnable() {

							@Override
							public void run() {
								ListView listview = Contactsource.getListView();
								AdapterContacts adapter = new AdapterContacts(context, listeTri);
								//listview.setAdapter(adapter);
							}

        		         });

        				dialog.dismiss();

        			}
        		}).start();
         }
         return false;
      }

}

Le seul problème est que je ne peux pas changer la vue courante à partir du menu... :(

Une idée?

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...