Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1336 connectés 

 


 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  84  85  86  87  88  89
Auteur Sujet :

Developpement sur Android !

n°1939522
kaloskagat​os
Posté le 10-11-2009 à 23:04:44  profilanswer
 

Reprise du message précédent :
Arf, encore merci cbeyls! (je ne connais pas Eclipse donc ça fait beaucoup de choses à intégrer...).

 

Cette question s'adresse à tous les participants du topic : vous codez quoi et pourquoi sur Androïd? Moi je cherche à faire une télécommande qui utilise l'écran tactile, l'accéléromètre et peut-être la boussole pour un logiciel du boulot qui visualise des objets en 3D. Je le fais pour mon compte personnel, pour le moment... Mais c'est un bon moyen d'approcher Andoïd...

 

Pour ceux que ça intéresse mais vous devez déjà connaître : Android Scripting Environment


Message édité par kaloskagatos le 10-11-2009 à 23:05:36

---------------
« Le hasard, c’est différent de la chance. Parce que la chance, je n'en ai jamais. »
mood
Publicité
Posté le 10-11-2009 à 23:04:44  profilanswer
 

n°1939606
The_chosen​_one
There can only be one !
Posté le 11-11-2009 à 11:43:51  profilanswer
 

J'essaye pour commencer de faire un gestionnaire/répertoire des digicodes de mes contacts en les représentant sur une carte.

n°1940023
kaloskagat​os
Posté le 12-11-2009 à 14:23:55  profilanswer
 

Comme quelqu'un me l'a fait remarquer, les version d'Android sont : Cupcake (1.5), Donut (1.6), Eclair(2.0), Flan(?), à bien y regarder ça fait C, D, E, F,...


---------------
« Le hasard, c’est différent de la chance. Parce que la chance, je n'en ai jamais. »
n°1940230
kaloskagat​os
Posté le 13-11-2009 à 00:59:55  profilanswer
 

cbeyls a écrit :


On teste le tactile avec la souris. Et pour simuler les senseurs, on peut utiliser un plugin comme SensorSimulator mais je crois qu'il n'utilise pas les API du dernier SDK Android.


 
Bon je viens de tester, le simulateur de senseurs marche avec l'ancienne interface SensorListener et non pas SensorEventListener. Mais bon, ça peut dépanner, c'est quand même très bien foutu.


---------------
« Le hasard, c’est différent de la chance. Parce que la chance, je n'en ai jamais. »
n°1941552
Agmoh
¯\_(ツ)_/¯
Posté le 17-11-2009 à 13:31:25  profilanswer
 

Hello,  
J'ai une question qui parait toute bete mais j'ai un peu de mal a regler le truc :  
 
J'ai une appli qui prend ta position GPS.  
A partir de la, je parse un fichier XML pour ressortir les 5 points les plus proche de toi.
 
Je fais un adapter, avec un tabelau de string fabriqué a partir du fichier XML, j'alimente un ListView.
 
comme ca là :  

Code :
  1. ListView vueListe;
  2.   vueListe = (ListView) findViewById(R.id.Liste_store);
  3.   final ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,store_around.get_magasin());
  4.   vueListe.setAdapter(adapter);


 
ou store_around.get_magasin() me renvoi un array String.
 
Ensuite je voudrai faire un setOnItemClickListener pour afficher des infos supplémentaire sur ce point.
Comment recuperer un id avec cette technique ?!!
J'arrive juste a recuperer 1,2,3 la position de l'item, mais j'aimerai mettre genre l'IDMagasin...?
 
 
Merci !

n°1941591
budlite
Fresh
Posté le 17-11-2009 à 14:38:38  profilanswer
 

En fait il faut que l'index que tu récupères dans le OnItemClickListener soit le même que l'index auquel il correspond dans le tableau ( ou le vecteur peu importe ) de données.
 

Code :
  1. Vector<Magasin> myMagasins = store_around.get_magasin();
  2. final ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,myMagasins );


et dans ton listener

Code :
  1. onItemClick(AdapterView<String> parent, View view, int position, long id)
  2. System.out.println("Magasin sélectionné :"+myMagasins.get(position).getName() );


 
Je suis pas sur mon PC donc je peux pas tester :D Dis moi si ça marche ou pas ;)


---------------
Fresh
n°1941601
Agmoh
¯\_(ツ)_/¯
Posté le 17-11-2009 à 14:56:04  profilanswer
 

Merci beaucoup de ta réponse !
Je dirais Oui sauf que :  
store_around.get_magasin() va chercher un fichier XML sur un site avec x000 entrées.
Je le parcours, je fais une comparaison des données géographique avec la position, et je met dans un tableau vierge les X points les plus proches.
Du coup, l'index de mon tableau renvoyé est 0,1,2,3,4...
 
Donc d'après ton explication, ca ne résoudra pas mon problème.
 
 
Array :
Index   |   ID   |   Libellé
0         | M010 | Lille-Sud
1         | M012 | Lille  
2         | M013 | Paris
 
Donc c'est "PAris" qui doit s'afficher, mais l'ID doit etre "M013", et non 2...
Comment puis je proceder ?
 
J'ai penser a un truc de porc... mais non... j'ose pas le dire !!

n°1941609
budlite
Fresh
Posté le 17-11-2009 à 15:13:28  profilanswer
 

Je dois dire que je ne comprends pas bien ton problème :o  
 
En gros tu as 2 vecteurs ? Limite tu peux pas mettre un peu plus de code ? c'est pas bien clair pour moi.


---------------
Fresh
n°1941614
Agmoh
¯\_(ツ)_/¯
Posté le 17-11-2009 à 15:27:29  profilanswer
 

Ok :  
 
Mon activité appelle cette methode :
 

Code :
  1. public void mise_a_jour()
  2. {
  3.  store_around_engine store_around = new store_around_engine(positionGPS, this);
  4.  Log.i("store_aroud_me ","mise a jour " );
  5.  try {
  6.       Log.e("Calcul", "Entrée" );
  7.       ListView vueListe;
  8.   vueListe = (ListView) findViewById(R.id.Liste_store);
  9.   final ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,store_around.get_magasin());
  10.   //final ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, R.layout.listitem,store_around.get_magasin());
  11.   vueListe.setAdapter(adapter);
  12.   vueListe.setOnItemClickListener(this);
  13.   //vueListe.setOnItemClickListener(vueListe_btn);
  14.  // vueListe.setsetListItemClickListener(vueListe_btn);
  15.  } catch (Exception e) {
  16.       Log.e("Calcul", "Echec" );
  17.   // TODO Auto-generated catch block
  18.   e.printStackTrace();
  19.  }


 
 
 
Les methodes de la classe Store Around Engine :  
 

Code :
  1. public store_around_engine(Location bPositionGPS, Context bContext)
  2. {
  3.  this.bPositionGPS=bPositionGPS;
  4.  this.bContexte=bContext;     
  5. }
  6. public ArrayList<ArrayList> renvoi_liste_magasin() throws Exception { // pour la methode get_magasin
  7.  ArrayList<ArrayList> ArrayRetour = new ArrayList<ArrayList>();
  8.  Log.i("url_store xml", bContexte.getResources().getString(R.string.Source_store_XML));
  9.  URL xml_magasin= new URL(bContexte.getResources().getString(R.string.Source_store_XML));
  10.  DocumentBuilderFactory fabrique = DocumentBuilderFactory.newInstance();
  11.  DocumentBuilder constructeur = fabrique.newDocumentBuilder();
  12.  Document document = constructeur.parse(xml_magasin.openStream());
  13.  Log.e("XML ","ON rentre" );
  14.  Element racine = document.getDocumentElement();
  15.  NodeList liste = racine.getElementsByTagName("Magasins" );
  16.  for (int i=0; i<liste.getLength();i++)
  17.  {
  18. liste.item(i).getFirstChild().getNextSibling().getNodeName()); // LIBELLE
  19.   Node tmpliste = liste.item(i).getFirstChild().getNextSibling(); // Libellé
  20.   Node Latitude = liste.item(i).getLastChild().getPreviousSibling().getPreviousSibling().getPreviousSibling();
  21.   Node Longitude = liste.item(i).getLastChild().getPreviousSibling();
  22.   //Log.e("XML ","ON CHECK last child previous 1" + Longitude.getNodeName());
  23.   //Emplacement du store fetché
  24.   Location dest = new Location("_id1" );
  25.   dest.setLatitude(Double.parseDouble(getTextContent(Latitude)));
  26.   dest.setLongitude(Double.parseDouble(getTextContent(Longitude)));
  27.   //Log.e("XML ","distance " );
  28.   Location posGPS=this.bPositionGPS;
  29.   //Log.e("XML ","position / dest " +  posGPS.getLongitude() + "  / " +dest.getLongitude());
  30.   //Log.e("XML ","distance donc : " +  posGPS.distanceTo(dest));
  31.   //int meter=(int)dest.distanceTo(posGPS);
  32.   //Log.e("XML ","distance "+meter);
  33.   Double Maxlat=posGPS.getLatitude();
  34.   Double Minlat=posGPS.getLatitude();
  35.   Double Maxlong=posGPS.getLongitude();
  36.   Double Minlong=posGPS.getLongitude();
  37.   Maxlat=Maxlat+0.5;
  38.   Minlat=Minlat-0.5;
  39.   Maxlong=Maxlong+0.5;
  40.   Minlong=Minlong-0.5;
  41.   if((Double.parseDouble(getTextContent(Latitude))<Maxlat)&&(Double.parseDouble(getTextContent(Latitude))>Minlat)&&(Double.parseDouble(getTextContent(Longitude))>Minlong)&&(Double.parseDouble(getTextContent(Longitude))<Maxlong)   )
  42.   {
  43.   ArrayList<String> tmp = new ArrayList<String>();
  44.   tmp.add("KIABI "+getTextContent(tmpliste));
  45.   tmp.add(getTextContent(Latitude));
  46.   tmp.add(getTextContent(Longitude));
  47.   tmp.add(""+posGPS.distanceTo(dest));
  48.   ArrayRetour.add(tmp);
  49.   }
  50.  }
  51.  Log.e("XML ","ON tri a bulle" );
  52.  ArrayRetour=tri_a_bulle(ArrayRetour);
  53.  Log.e("XML ","tri a bulle ok" );
  54.  return ArrayRetour;
  55. }
  56. public ArrayList<String> get_magasin ()
  57. {
  58.  ArrayList<ArrayList> Liste = new ArrayList <ArrayList>();
  59.  ArrayList<String> Liste_retour = new ArrayList <String>();
  60.  Log.e("fill-IT","Essai" );
  61.  try {
  62.   Liste = this.renvoi_liste_magasin();
  63.   String[] colonne = new String[] {"Nom Magasin"};
  64.   ArrayList<String> aTableRetour = new ArrayList<String>();
  65.   int i;
  66.   i=0;
  67.   Log.e("FILL-it","size Liste" + Liste.size() );
  68.   for(i=0; i<Liste.size(); i++)
  69.   {
  70.    ArrayList<String> tmp = (ArrayList) Liste.get(i);
  71.    Log.e("FILL-it", "nom "+tmp.get(0));
  72.    Liste_retour.add(tmp.get(0));
  73.   }
  74.   Log.e("fill-IT","Succes" );
  75.  } catch (Exception e) {
  76.   // TODO Auto-generated catch block
  77.   e.printStackTrace();
  78.   Log.e("fill-IT","Echec" );
  79.  }
  80.  return Liste_retour;
  81. }


 
 
Tous ça, ça me fais une liste avec mes stores les plus proches de ma position.
 
Je veux pouvoir cliquer sur un store, qui va appeler une nouvelle activité en passant l'ID d'un store et non l'ID de l'array qui me sera inutile, puisque l'array n'existera plus et ne contient de toute facon pas, mes infos complémentaires.  
Ainsi, l'activité qui sera appellée, elle va chercher dans le fichier XML toute les infos d'un magasin...
 
C'est plus clair ?

n°1941765
cbeyls
Hail to the King, Baby
Posté le 18-11-2009 à 05:49:56  profilanswer
 

Voilà la méthode la plus "propre":
 
Au lieu d'utiliser un ArrayAdapter<String> , utilise un ArrayAdapter<Magasin>
et donc modifie ta méthode get_magasin() afin qu'elle te renvoie un ArrayList<Magasin>.
 
Dans ta classe Magasin, tu stockes toutes les données utiles relatives à un magasin, c'est-à-dire son libellé et son ID. Tu y crées deux méthodes:
getID() qui renvoie l'ID dont tu as besoin pour lancer ta seconde activité.
toString() que tu overrides et qui renvoie le libellé. Ca permet à l'ArrayAdapter de récupérer les libellés qui vont s'afficher à l'écran.
 
Ensuite quand on sélectionne un item de la liste, tu fais un getItem(position) sur ton adapter pour récupérer ton instance de Magasin, tu appelles la méthode getID() dessus pour récupérer l'ID, et tu lances ta 2e activité en lui passant l'ID.

mood
Publicité
Posté le 18-11-2009 à 05:49:56  profilanswer
 

n°1941882
Agmoh
¯\_(ツ)_/¯
Posté le 18-11-2009 à 14:02:47  profilanswer
 

Merci beaucoup pour ta précieuse aide.
 
J'ai effectivement créé une classe Store.
Donc j'ai tout modifié, maintenant, ma méthode get_magasin me ressort bien un ArrayList<Store>
 
Cependant, comme tu le précise, l'ArrayAdapter se construit avec un ArrayList<String> en 3ème paramètre.
 
Peux tu me préciser stp le passage ou tu dis...
 

Citation :

toString() que tu overrides et qui renvoie le libellé. Ca permet à l'ArrayAdapter de récupérer les libellés qui vont s'afficher à l'écran.


 
je suis pas encore assez confirmé pour comprendre  :)  
 

n°1941926
Deamon
Posté le 18-11-2009 à 15:04:15  profilanswer
 

Agmoh a écrit :


je suis pas encore assez confirmé pour comprendre  :)  


Il faut que tu réécrives la méthode "String toString()" qui existe dans tous les objets pour la remplacer et faire en sorte qu'elle retourne le libellé de ton objet.

n°1941929
budlite
Fresh
Posté le 18-11-2009 à 15:09:58  profilanswer
 

cbeyls a écrit :

Voilà la méthode la plus "propre":
 
Au lieu d'utiliser un ArrayAdapter<String> , utilise un ArrayAdapter<Magasin>
et donc modifie ta méthode get_magasin() afin qu'elle te renvoie un ArrayList<Magasin>.
 
Dans ta classe Magasin, tu stockes toutes les données utiles relatives à un magasin, c'est-à-dire son libellé et son ID. Tu y crées deux méthodes:
getID() qui renvoie l'ID dont tu as besoin pour lancer ta seconde activité.
toString() que tu overrides et qui renvoie le libellé. Ca permet à l'ArrayAdapter de récupérer les libellés qui vont s'afficher à l'écran.
 
Ensuite quand on sélectionne un item de la liste, tu fais un getItem(position) sur ton adapter pour récupérer ton instance de Magasin, tu appelles la méthode getID() dessus pour récupérer l'ID, et tu lances ta 2e activité en lui passant l'ID.


Voila ce serait la bonne méthode.
En fait si tu overrides la méthode getView du ArrayAdapter, tu peux renvoyer une vue complètement personnalisée pour chaque élément de la liste ( par exemple avec le nom du magasin dans un premier label, puis son adresse dans un label plus petit ).


---------------
Fresh
n°1941933
budlite
Fresh
Posté le 18-11-2009 à 15:11:37  profilanswer
 

Agmoh a écrit :

Merci beaucoup pour ta précieuse aide.
 
 
Cependant, comme tu le précise, l'ArrayAdapter se construit avec un ArrayList<String> en 3ème paramètre.
 


Et nan justement ;)
L'ArrayAdapter accepte les types génériques
ArrayAdapter  (Context context, int textViewResourceId, T[] objects)


---------------
Fresh
n°1942029
Agmoh
¯\_(ツ)_/¯
Posté le 18-11-2009 à 16:30:51  profilanswer
 

Nickel !  
Ca me renvoit des id d'android du style "com.test.Store@xxxxxxx"
 
Donc là faut que j'override la methode getView de l'ArrayAdapter ou bien que je réécrive String toString() (de mon objet Store ?) ... ?
 

n°1942076
cbeyls
Hail to the King, Baby
Posté le 18-11-2009 à 18:33:46  profilanswer
 

Ca dépend de ce que tu veux afficher, si tu veux garder l'affichage par défaut qui appelle toString() sur les objets, tu overrides seulement toString() dans Store.
Sinon tu overrides getView() dans ton ArrayAdapter et là tu peux entièrement personnaliser l'affichage des éléments de liste et afficher plusieurs infos que tu récupères sur ton objet Store au lieu d'uniquement afficher un libellé.


Message édité par cbeyls le 18-11-2009 à 18:35:17
n°1942289
Agmoh
¯\_(ツ)_/¯
Posté le 19-11-2009 à 12:42:02  profilanswer
 

yep yep it works.
 
Merci à vous !  
Encore une précision je viens mendier: C'est moi ou la méthode par défaut pour parser un fichier XML est SUPER mal faite ?
 
 
Parce que du coup j'arrive à un truc comme ça :  
 

Code :
  1. public ArrayList<Store> renvoi_liste_magasin() throws Exception { // pour la methode get_magasin
  2.  ArrayList<Store> ArrayRetour = new ArrayList<Store>();
  3.  URL xml_magasin= new URL(bContexte.getResources().getString(R.string.Source_store_XML));
  4.  DocumentBuilderFactory fabrique = DocumentBuilderFactory.newInstance();
  5.  DocumentBuilder constructeur = fabrique.newDocumentBuilder();
  6.  Document document = constructeur.parse(xml_magasin.openStream());
  7.  Log.e("XML ","ON rentre" );
  8.  Element racine = document.getDocumentElement();
  9.  NodeList liste = racine.getElementsByTagName("Magasins" );
  10.  for (int i=0; i<liste.getLength();i++)
  11.  {
  12.  // Log.e("XML ","ON set le MapositionGPS" );
  13.  // Log.e("XML ","ON CHECK" + liste.item(i).getFirstChild().getNextSibling().getNodeName()); // LIBELLE
  14.   Node tmpliste = liste.item(i).getFirstChild().getNextSibling(); // Libellé
  15.   Node Latitude = liste.item(i).getLastChild().getPreviousSibling().getPreviousSibling().getPreviousSibling();
  16.   Node Longitude = liste.item(i).getLastChild().getPreviousSibling();
  17.   //Log.e("XML ","ON CHECK last child previous 1" + Longitude.getNodeName());
  18. [...]
  19.   //int meter=(int)dest.distanceTo(posGPS);
  20.   //Log.e("XML ","distance "+meter);
  21.   Double Maxlat=posGPS.getLatitude();
  22.   Double Minlat=posGPS.getLatitude();
  23.   Double Maxlong=posGPS.getLongitude();
  24.   Double Minlong=posGPS.getLongitude();
  25.   Maxlat=Maxlat+0.5;
  26.   Minlat=Minlat-0.5;
  27.   Maxlong=Maxlong+0.5;
  28.   Minlong=Minlong-0.5;
  29.   if((Double.parseDouble(getTextContent(Latitude))<Maxlat)&&(Double.parseDouble(getTextContent(Latitude))>Minlat)&&(Double.parseDouble(getTextContent(Longitude))>Minlong)&&(Double.parseDouble(getTextContent(Longitude))<Maxlong)   )
  30.   {
  31.    Store tmp= new Store(
  32.    1
  33.    , getTextContent(liste.item(i).getLastChild().getPreviousSibling())
  34.    , getTextContent(liste.item(i).getLastChild().getPreviousSibling())
  35.    , getTextContent(liste.item(i).getLastChild().getPreviousSibling())
  36.    , getTextContent(liste.item(i).getLastChild().getPreviousSibling())
  37.    , getTextContent(liste.item(i).getLastChild().getPreviousSibling())
  38.    , getTextContent(liste.item(i).getLastChild().getPreviousSibling())
  39.    , getTextContent(liste.item(i).getLastChild().getPreviousSibling()),
  40.    Double.parseDouble(getTextContent(Latitude)),
  41.    Double.parseDouble(getTextContent(Latitude)),posGPS.distanceTo(dest));
  42.   ArrayRetour.add(tmp);
  43.   }
  44.  }
  45.  Log.e("XML ","On tri a bulle" );
  46.  ArrayRetour=tri_a_bulle(ArrayRetour);
  47.  Log.e("XML ","tri a bulle ok" );
  48.  return ArrayRetour;
  49. }


 
 
Les paramètre pour construire ma classe store, faut que je joue avec les getPreviousSibling(), getNextSibling() ?  
Ya pas un moyen de faire un truc du genre liste.item(i).getvalue("MAGASIN_ID" )  ?  
 
 

n°1942319
Agmoh
¯\_(ツ)_/¯
Posté le 19-11-2009 à 14:21:49  profilanswer
 

je m'auto répond:  
 
J'ai crée une fonction pour ceux que ça pourrais aider :  

Code :
  1. private String getSimple_XMLvalue(Node p_node,String p_str)
  2. {
  3.  NodeList infos = p_node.getChildNodes();
  4.  int i=0;
  5.  String buffer="";
  6.  while (i<infos.getLength() && buffer!=p_str)
  7.  {
  8.   Node info=infos.item(i);
  9.   if (info.getNodeType() == Node.ELEMENT_NODE)
  10.   {
  11.    if(info.getNodeName().toLowerCase().trim().equalsIgnoreCase(p_str.toLowerCase().trim()))
  12.    {
  13.     buffer=getTextContent(info);
  14.     i=infos.getLength();
  15.    }
  16.   }
  17.   i=i+1;
  18.  }
  19.  return buffer;
  20. }

n°1942341
budlite
Fresh
Posté le 19-11-2009 à 15:08:14  profilanswer
 

Merci ça peut aider :)
Juste une petite remarque, mais parser du JSON ça utilise moins de ressource que de parser du XML ( je dis ça car sur mobile on a tendance à vouloir optimiser les ressources :jap:  ).


---------------
Fresh
n°1942387
brisssou
8-/
Posté le 19-11-2009 à 16:04:48  profilanswer
 

Agmoh a écrit :

je m'auto répond:  
 
J'ai crée une fonction pour ceux que ça pourrais aider :  

Code :
  1. private String getSimple_XMLvalue(Node p_node,String p_str)
  2. {
  3.  NodeList infos = p_node.getChildNodes();
  4.  int i=0;
  5.  String buffer="";
  6.  while (i<infos.getLength() && buffer!=p_str)
  7.  {
  8.   Node info=infos.item(i);
  9.   if (info.getNodeType() == Node.ELEMENT_NODE)
  10.   {
  11.    if(info.getNodeName().toLowerCase().trim().equalsIgnoreCase(p_str.toLowerCase().trim()))
  12.    {
  13.     buffer=getTextContent(info);
  14.     i=infos.getLength();
  15.    }
  16.   }
  17.   i=i+1;
  18.  }
  19.  return buffer;
  20. }



 
si tu passes déjà tout en lowerCase, inutile de faire equalsIgnoreCase(), d'autant que c'est plus couteux que equals, toujours pour les ressources tout ça.


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
n°1942393
Agmoh
¯\_(ツ)_/¯
Posté le 19-11-2009 à 16:10:02  profilanswer
 

oui je sais, c'est lourd.
J'ai eu un truc assez space d'ailleurs :  
 

Code :
  1. if(info.getNodeName().toLowerCase().trim()==p_str.toLowerCase().trim())
  2.     {
  3.      buffer=getTextContent(info);
  4.      i=infos.getLength();
  5.     }


 
Ca ne rentre jamais dans ma condition !!
 
Il n'y a qu'en ajoutant par dessus equalsIgnoreCase que c'est passé... T'as une idée ?

n°1942455
budlite
Fresh
Posté le 19-11-2009 à 16:58:38  profilanswer
 

J'ai pas bien analysé le sens de tes variables, mais pour comparer des String il faut utiliser la méthode equals, ça vient peut être de là.


---------------
Fresh
n°1942468
Agmoh
¯\_(ツ)_/¯
Posté le 19-11-2009 à 17:10:34  profilanswer
 

Ok, ben c'est ça =)  
La j'vais creer ma nouvelle activité, et j'vais passer mon objet store avec putExtra... Faut que je matte un peu les tutos !
 
Merci bien pour votre aide en tout cas !

n°1942515
Agmoh
¯\_(ツ)_/¯
Posté le 19-11-2009 à 18:13:56  profilanswer
 

Comment passer un objet entre deux activités ?
 

Code :
  1. Intent intent= new Intent(this, ClasseB.class);
  2.  Bundle extras = new Bundle();
  3.  extras.putSerializable("blabla", Object_X);
  4.  intent.putExtras(extras);
  5.  startActivity(intent);


 
 

n°1942624
cbeyls
Hail to the King, Baby
Posté le 20-11-2009 à 02:28:58  profilanswer
 

Ouhla, le double égal pour comparer deux chaînes de caractère! On peut le faire en C# mais pas en Java.
Ben sinon il vaut mieux faire a.equalsIgnorecase(b) que a.toLowerCase().equals(b.toLowerCase()) qui est encore plus lourd puisqu'il alloue 2 objets String superflus en plus.
 
Moi j'utilise le XML Pull Parser au lieu du DOM, c'est extrêmement plus rapide pour analyser du XML (surtout sur un mobile et surtout si ton fichier XML est gros). C'est aussi un peu plus compliqué que du DOM évidemment, mais pas trop.


Message édité par cbeyls le 20-11-2009 à 02:32:25
n°1942748
brisssou
8-/
Posté le 20-11-2009 à 11:47:22  profilanswer
 

Agmoh a écrit :

oui je sais, c'est lourd.
J'ai eu un truc assez space d'ailleurs :

 
Code :
  1. if(info.getNodeName().toLowerCase().trim()==p_str.toLowerCase().trim())
  2.     {
  3.      buffer=getTextContent(info);
  4.      i=infos.getLength();
  5.     }
 

Ca ne rentre jamais dans ma condition !!

 

Il n'y a qu'en ajoutant par dessus equalsIgnoreCase que c'est passé... T'as une idée ?

 

lourd c'est pas forcément grave, là c'est inutile surtout, plus l'erreur de equals relevée par Budlite


Message édité par brisssou le 20-11-2009 à 11:47:48

---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
n°1942897
cbeyls
Hail to the King, Baby
Posté le 20-11-2009 à 17:33:05  profilanswer
 

p_str.toLowerCase().trim()
est fait dans une boucle, autant le faire une seule fois au début.
 
En plus il y a une autre comparaison incorrecte de 2 chaines de caractères:
buffer!=p_str

n°1943039
Profil sup​primé
Posté le 21-11-2009 à 12:58:19  answer
 

Salut !  
 
Je découvre le dév. Android depuis quelques jours et pour réaliser ma première application (un jeu de pendu), j'ai besoin de votre aide ! Je cherche à savoir les différentes alternatives s'offrant à moi pour stocker et exploiter la liste des mots susceptibles de sortir à mon jeu de pendu. Dois-je utiliser une bdd ou y a-t-il d'autres moyens ? Stocker les mots dans un fichier xml ? Ou autres ? Si possible, détaillez votre réponse car je suis vraiment débutant en dév. JAVA. Merci :)

n°1943072
budlite
Fresh
Posté le 21-11-2009 à 14:46:03  profilanswer
 

Je t'invite à voir ici, tout y est expliqué ;)
http://developer.android.com/guide [...] orage.html


---------------
Fresh
n°1943113
cbeyls
Hail to the King, Baby
Posté le 21-11-2009 à 20:56:45  profilanswer
 

Je te conseille de mettre tes mots dans un fichier XML que tu lis avec le XML Pull Parser (histoire de ne pas tout stocker en mémoire pendant la lecture) ou plus facile encore, dans un fichier texte standard avec un mot par ligne que tu lis ligne par ligne.
 
Après tu stockes tous ces mots dans une base de données lors d'une phase d'initialisation, ce qui te permettra d'en tirer facilement au hasard sans avoir à relire le fichier texte à chaque fois.

n°1943209
Agmoh
¯\_(ツ)_/¯
Posté le 22-11-2009 à 15:18:38  profilanswer
 

Hello !  
Savez vous quelle est la maniere la plus efficiente pour faire des listview customisée, en y integrant une petite image ?  
 
J'ai cherché sur le net, mais je suis tombé sur des tutos plus que très farfelus...
 
 
Merci !

n°1943211
Profil sup​primé
Posté le 22-11-2009 à 15:21:45  answer
 

cbeyls a écrit :

Je te conseille de mettre tes mots dans un fichier XML que tu lis avec le XML Pull Parser (histoire de ne pas tout stocker en mémoire pendant la lecture) ou plus facile encore, dans un fichier texte standard avec un mot par ligne que tu lis ligne par ligne.
 
Après tu stockes tous ces mots dans une base de données lors d'une phase d'initialisation, ce qui te permettra d'en tirer facilement au hasard sans avoir à relire le fichier texte à chaque fois.


Je vais regarder du côté du XML ! En terme de performance, c'est plus intéressant de charger un fichier plat dans une bdd sqlite ou bien de parcourir le fichier xml à chaque fois que c'est nécessaire ? J'imagine que c'est fonction du nombre de mots présents dans le fichier xml ?

n°1943215
budlite
Fresh
Posté le 22-11-2009 à 15:46:30  profilanswer
 


Les opérations de I/O sont généralement les plus couteuses, donc il vaut mieux les faire le moins possible. Charge le contenu de ton fichier une seule fois si c'est possible.


---------------
Fresh
n°1943234
Agmoh
¯\_(ツ)_/¯
Posté le 22-11-2009 à 17:00:00  profilanswer
 

Budlite, pour mon histoire de listivew...?

n°1943291
cbeyls
Hail to the King, Baby
Posté le 22-11-2009 à 23:47:44  profilanswer
 

Si ce n'est qu'une liste de mots et rien d'autre, tu n'as pas besoin de XML, stocke tout dans des fichiers plats, ça ira plus vite et ça sera plus facile à programmer.
Ensuite, à toi de choisir si tu les stocke tous en mémoire ou si tu les insères dans une base de données. Si tu as beaucoup de mots, il faudra sans doute utiliser la BDD.

n°1943295
Agmoh
¯\_(ツ)_/¯
Posté le 23-11-2009 à 00:00:06  profilanswer
 

pas d'avis de confirmé pour une listview personnalisée ? Sur la manière concrète de proceder?

n°1943299
Profil sup​primé
Posté le 23-11-2009 à 00:23:56  answer
 

Et si j'en ai peu, j'utiliserai un tableau, c'est bien ça ? C'est ce que j'avais pensé faire à l'origine : fichier plat + matrice. Mais je voulais connaitre un peu les autres options s'offrant à moi.

n°1943451
Agmoh
¯\_(ツ)_/¯
Posté le 23-11-2009 à 12:11:12  profilanswer
 

Pas de pistes pour personnes?

n°1943515
The_chosen​_one
There can only be one !
Posté le 23-11-2009 à 14:34:34  profilanswer
 

en utilisant un inflater sur une view que tu crées indépendamment (avec par exemple, une imageview + un textview).
J'ai acheté le cours vidéo de frandroid je le trouve super bien fait, et il y a justement cet exemple.
 
Faut que je vois si je te trouve du code que je peux coller.

n°1943710
Agmoh
¯\_(ツ)_/¯
Posté le 23-11-2009 à 18:39:12  profilanswer
 

Hello all !
J'essaye de parser un XML.
Un noeud me pose probleme.
SOn contenu est dans une balise CDATA, et elle me renvoi ""...
 
 
 

n°1943757
cbeyls
Hail to the King, Baby
Posté le 23-11-2009 à 22:03:55  profilanswer
 

Agmoh a écrit :

Hello all !
J'essaye de parser un XML.
Un noeud me pose probleme.
SOn contenu est dans une balise CDATA, et elle me renvoi ""...


 
Et tu emploies quel parseur? DOM? SAX? XmlPull?

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  84  85  86  87  88  89

Aller à :
Ajouter une réponse
 

Sujets relatifs
problème scrollView cocoaDes développeurs Android sur Bordeaux ?
Développement d'un nouveau réseau en ligne[SVN] suivi des impacts d'un développement
Developpement d'une application de gestion de logsCherche framework java pour developpement web rapide
[Android] Emulateur et appliDéveloppement d'un site Web
Affichage message sur console projet pour développement plugin eclipsedeveloppement d'un service web mobile
Plus de sujets relatifs à : Developpement sur Android !


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR