2016-03-24 1 views
0

J'essaie de configurer un gridview qui sera actualisé lorsqu'une nouvelle recherche est exécutée.Android - Mise à jour GridView sur le bouton cliquez sur

ceci est mon appel à mettre en place le gridview

final GridElement_Results adapter = new GridElement_Results(this, savedInstanceState, track_name, album_name, track_num, album_id, album_link); 
    grid = (GridView)findViewById(R.id.grid_results); 
    grid.setAdapter(adapter); 

Comme vous pouvez le voir, je passe un tas de tableaux.

En cliquant sur un bouton, la fonction getTracks() est appelée, ce qui permet d'obtenir de nouvelles données du serveur. Les tableaux sont mis à jour avec les nouvelles données, que j'ai vérifié fonctionne.

icon_activesearch.setOnClickListener(new View.OnClickListener() { 
            @Override 
            public void onClick(View v) { 

             getTracks("newsearchterm"); 

             adapter.notifyDataSetChanged(); 
             grid.invalidateViews(); 

            } 
           } 
    ); 

Et puis j'appelle adapter.notifyDataSetChanged() et grid.invalidateViews() pour mettre à jour et de redessiner la grille. Mais évidemment, je fais quelque chose de mal ici. Est-ce parce que je définis l'adaptateur comme final? Pour y accéder avec la méthode onClick, je dois la définir en finale.

Que dois-je changer pour le faire fonctionner.

+0

ajouter 'getTracks()' méthode –

+0

-vous passer les nouveaux résultats à votre carte? – Francesc

+0

de ce que je vois vous ne passez pas un objet de type List, ArrayList ou Array à votre carte. Comment exactement l'adaptateur obtient-il les données qu'il montre? – Anonymous

Répondre

0

vous devriez attendre jusqu'à ce que les nouvelles données vont chercher puis notifier l'adaptateur, mais que vous appelez aviser juste après getTracks() sans délai

+0

Voulez-vous dire que notifyDataSetChanged est appelé avant la fin de la requête http? Comment puis-je ajouter un délai? Dormir? – fractal5