Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Android] Récupérer un listview depuis une URL

    4 septembre 2013 à 10:11:59

    Bonjour à tous,

     Je poste ici car j'ai un petit soucis lors de mon développement d'une application android.

    Cette dernière est censée pouvoir récupérer en streaming des podcasts hébergés sur mon hébergement mutualisé.

    J'aimerais donc pouvoir récupérer des listview des fichiers mp3 depuis une URL d'un dossier sur mon hébergement mutualisé.

    Est-ce que cela est possible? Si oui, de quelel façon?

    Merci d'avance!

    • Partager sur Facebook
    • Partager sur Twitter
      4 septembre 2013 à 10:55:57

      Salut, je suis pas sur d'avoir bien compris ce que tu veux faire mais,

      ( à condition que tu puisses mettre du PHP sur ton hébergement mutualisé)

      Tu peux faire un petit fichier php sur ton serveur qui listera les fichiers mp3 de ton répertoire.

      Et ton programme android fera une reqûete sur ce fichier php, ensuite avec un traitement assez facile tu pourras afficher une ListView de ces fichiers mp3.

      -
      Edité par minitoma 4 septembre 2013 à 10:57:01

      • Partager sur Facebook
      • Partager sur Twitter
        4 septembre 2013 à 10:56:27

        Tu peux récupérer un XML ou un JSON depuis le serveur, parser les données et les affichées dans une ListView.
        • Partager sur Facebook
        • Partager sur Twitter
          4 septembre 2013 à 14:27:14

          Merci de vos réponses. En fait je pense récupérer la liste xml des catégories des podcasts et l'afficher en listview.

          Par contre le flux RSS regroupe seulement les 10 derniers articles, quelqu'un saurait-il comment récupérer la liste XML de la totalité des articles?

          • Partager sur Facebook
          • Partager sur Twitter
            5 septembre 2013 à 18:20:21

            Alors ça va pas être "aussi simple" que ça. 

            Tout d'abord pour "récupérer" il va te falloir un fichier .php sur ton serveur qui va donc requeter la base de données et te faire un echo de la requete réalisée en JSON. 

            Côté Android, pour appeller ce fichier .php il te faudra réaliser une fonction Asynchrone (obligatoire depuis Android pré-honeycomb) qui ressemble a qqch comme ça: 

            private class AsyntaskAddAccount extends AsyncTask<String, Void, Boolean> {
            
            
            
            		Boolean reponse;
            
            
            
            		@Override
            
            		protected void onPreExecute() {
            
            			super.onPreExecute();
            
            			progressDialog = new ProgressDialog(fa);
            
            			progressDialog.setTitle("Inscription en cours...");
            
            			progressDialog.setMessage("Merci de patienter, cela va prendre quelques secondes.");
            
            			progressDialog.setCancelable(false);
            
            			progressDialog.setIndeterminate(true);
            
            			progressDialog.show();
            
            		}
            
            
            
            		@Override
            
            		protected Boolean doInBackground(String... arg0) {
            
            			ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
            
            			nameValuePairs.add(new BasicNameValuePair("app","android"));
            
            			nameValuePairs.add(new BasicNameValuePair("action","setNewAccount"));
            
            			nameValuePairs.add(new BasicNameValuePair("nom",arg0[0]));
            
            			nameValuePairs.add(new BasicNameValuePair("prenom",arg0[1]));
            
            			nameValuePairs.add(new BasicNameValuePair("mail",arg0[2]));
            
            			nameValuePairs.add(new BasicNameValuePair("pass",arg0[3]));
            
            			nameValuePairs.add(new BasicNameValuePair("avertMailNewsletter",arg0[4]));
            
            			nameValuePairs.add(new BasicNameValuePair("numRegion",arg0[5]));
            
            			InputStream is = null;
            
            			//http post
            
            			try{
            
            
            
            				HttpClient httpclient = new DefaultHttpClient();
            
            				HttpPost httppost = new HttpPost(getResources().getString(R.string.address_url_server));
            
            				httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            
            				HttpResponse response = httpclient.execute(httppost);
            
            				HttpEntity entity = response.getEntity();
            
            				is = entity.getContent();
            
            			}catch(Exception e){
            
            				Log.e("log_tag", "Error in http connection "+e.toString());
            
            			}
            
            			//convert response to string
            
            			try{
            
            				BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
            
            				StringBuilder sb = new StringBuilder();
            
            				String line = null;
            
            				while ((line = reader.readLine()) != null) 
            
            				{
            
            					sb.append(line + "\n");
            
            				}
            
            				is.close();
            
            
            
            				resultInscription = sb.toString();
            
            			}catch(Exception e){
            
            				Log.e("log_tag", "Error converting result "+e.toString());
            
            			}
            
            
            
            			//parse json data
            
            			try{
            
            				JSONArray jArray = new JSONArray(resultInscription);
            
            				JSONObject json_data=null;
            
            				for(int i=0;i<jArray.length();++i)
            
            				{
            
            					json_data = jArray.getJSONObject(i);
            
            					//coonnexion reussie      
            
            					Log.e("tag", "REPONSE = "+json_data.getString("AccountCreated"));
            
            				}
            
            				reponse = jArray.getJSONObject(0).getBoolean("AccountCreated");
            
            				return reponse;
            
            			}
            
            			catch(JSONException e1){
            
            			} catch (ParseException e1) {
            
            			}
            
            
            
            			return reponse;
            
            		}
            
            
            
            		@Override
            
            		protected void onPostExecute(Boolean result) {
            
            			if (progressDialog!=null) {
            
            				progressDialog.dismiss();
            
            			}
            
            			Toast.makeText(fa, result.toString(), Toast.LENGTH_SHORT).show();
            
            			if(result == true){
            
            				titleEmail.setText(getResources().getString(R.string.account_created));
            
            				titleEmail.setTextColor(getResources().getColor(R.color.valid_field));
            
            			} else {
            
            				titleEmail.setText(getResources().getString(R.string.account_creation_failure));
            
            				titleEmail.setTextColor(getResources().getColor(R.color.error_email));
            
            			}
            
            			super.onPostExecute(result);
            
            		}
            
            
            
            	}

            Ce fichier, il va donc dans la fonction "post" que tu remplisses une liste d'objet et que ces objets tu les adaptes a ta listview. Il faut donc passer par un adapter ;) 

            En gros : MySQL (BDD) -> PHP -> Android : fonction AsynTask -> List<Objects> -> Adapter > ListView.setAdpter(adapter) Et voila.

            • Partager sur Facebook
            • Partager sur Twitter

            [Android] Récupérer un listview depuis une URL

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown