Bonjour,
comment passer les paramètres d'une activité à une listeView?
Version imprimable
Bonjour,
comment passer les paramètres d'une activité à une listeView?
Tu pourrais préciser ?
Nous expliquer ce que tu souhaites faire (fonctionnellement) puis nous décrire techniquement la solution que tu aimerais mettre en place ?
Merci
je veux passer une donnée en cliquant sur un bouton pour afficher la liste des produits par exemple qui ont ce id
Il faut faire un onItemClickListener par exemple, comme expliqué ici :
http://mickael-lt.developpez.com/tut...iser-listview/
Après t'as une méthode qui reçoit un int :
Et là tu fais ce que tu veux.Code:
1
2
3
4
5 public void onClickTitre(int position) { switch(position){ case 0 : break;} }
Tu peux afficher une nouvelle vue, ou même afficher une nouvelle Activity.
Donc techniquement ?
Tu as une première activité où tu choisie un ID.
Cet ID tu le passe à la seconde activité
Et tu voudrais que ta liste présente dans ta seconde activité s'actualise en fonction de l'ID reçue ?
C'est ça ? Sinon n'hésites pas à vraiment écrire beaucoup d'information pour qu'on te comprenne.
oui c'est ça
je passe le parametre mais la liste s'affiche avec tous les données que je possèdeCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.listeresto); mNoImage = this.getResources().getDrawable(R.drawable.icon); Bundle b = getIntent().getExtras(); final int index = b.getInt("position"); ArrayList<Place> places = ContainerPlace.getPlaces(); mesUrl = buildListImages(); ListRestoAdapter lfa = new ListRestoAdapter(this, places,mesUrl); ListView maListViewPerso = (ListView) findViewById(R.id.list); maListViewPerso.setAdapter(lfa); maListViewPerso.setDividerHeight(2); maListViewPerso.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> a, View v, int position, long id) { CallFunc(position); } private void CallFunc(int position) { Intent intent = new Intent(ListeResto.this , PlaceInfo.class); intent.putExtra("position",index); startActivity(intent); } }); }
Ben dans ton Activity ListeResto tu récupéré l'int que t'as envoyé en Extra, et selon sa valeur tu dessines une liste.
j'ai déjà passer le paramètre ici
Code:
1
2
3 Bundle b = getIntent().getExtras(); final int index = b.getInt("position");
Donc si je résume, ce que tu n'arrives pas à faire, c'est charger une liste d'items différentes dans ta listview en fonction d'un paramètre ?
Pourrais-tu nous montrer le code actuel pour initialiser ta liste ?
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 public class ListeResto extends Activity { ListView list; ListRestoAdapter adapter; private static Drawable mNoImage; private final static String SERVER_IM = "http://tourisme.thegass.net/tourismee/web/uploads/images/grid"; private ArrayList<String> mesUrl; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.listeresto); mNoImage = this.getResources().getDrawable(R.drawable.icon); Bundle b = getIntent().getExtras(); final int index = b.getInt("position"); ArrayList<Place> places = ContainerPlace.getPlaces(); mesUrl = buildListImages(); ListRestoAdapter lfa = new ListRestoAdapter(this, places,mesUrl); ListView maListViewPerso = (ListView) findViewById(R.id.list); maListViewPerso.setAdapter(lfa); maListViewPerso.setDividerHeight(2); maListViewPerso.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> a, View v, int position, long id) { CallFunc(position); } private void CallFunc(int position) { Intent intent = new Intent(ListeResto.this , PlaceInfo.class); intent.putExtra("position",index); startActivity(intent); } }); }
Non mais ta liste finale, elle doit être dans PlaceInfo, non ?
non celle la est la liste finale je recupere l'id depuis l'activité precedente
Je comprends plus rien alors à ton architecture :aie:
Bonjour,
Si tu veux filtrer ta liste en fonction de l'id reçue par l'activity parente alors à ce moment du code tu dois utiliser cet id .
Dans ce code tu récupères bien les places mais tu ne filtres pas avec ta variable index .Code:
1
2
3
4
5
6
7
8
9 Bundle b = getIntent().getExtras(); final int index = b.getInt("position"); ArrayList<Place> places = ContainerPlace.getPlaces(); mesUrl = buildListImages(); ListRestoAdapter lfa = new ListRestoAdapter(this, places,mesUrl); ListView maListViewPerso = (ListView) findViewById(R.id.list); maListViewPerso.setAdapter(lfa);
oui c'est ça le problème,est ce que le filtrage se fait dans l'adapter?
Mais non le filtrage ce fait dans l'Activity.
L'Adapter ça créer les lignes de le liste, donc rien à voir.
Il faut que selon le int que tu reçoit dans l'activity 2 tu envoi la bonne liste d'objet à l'adapter et après ça va te dessiner la liste avec les objets que tu veux.
Le problème que j'arrive pas à faire ce filtrage
Peux tu nous montrer le code de
etCode:ContainerPlace.getPlaces();
Et aussi nous indiquer le paramètre sur lequel la restriction doit se faire ?Code:buildListImages();
Buildlistimage c'est une methode qui retourne l'ensemble des url des images
containerData.getplaces retournes tous les places que j'ai .Ces places je veux les filtrer en fonction de l'id
Ouais explique quel sont ces objets et comment tu veux les trier.
Après il existe plusieurs solution, par exemple une méthode qui reçoit une liste d'objet, qui fait un trie et qui retourne une nouvelle liste.
Après avec cette liste d'objet tu fais une ListView.
Edit :
Donne voir les attributs de tes classes et les critères de trie.