Afficher ProgressDialog Android

J'ai un EditText qui prend une String de l'utilisateur et un SearchButton. Lorsque le bouton de recherche est cliqué, il recherchera le fichier XML et l'affichera dans ListView.

Je suis en mesure de prendre la part de l'utilisateur, de rechercher dans le fichier XML et d'afficher la valeur de l'utilisateur dans ListView aussi.

  • Android: Skip Gradle "testClasses" tâche pour un projet de dépendance
  • Android Telegram App -> java.lang.UnsatisfiedLinkError: aucune implémentation n'a été trouvée pour void
  • Comment définir le texte de la boîte de dialogue google api dans la langue par défaut de l'application
  • Applink ne peut pas être résolu dans Facebook SDK
  • Des citations Android dans une chaîne de requête sql
  • Comment télécharger le fichier google drive dans Android
  • Ce que je veux, c'est d'afficher un ProgressDialog après que le bouton de recherche soit cliqué comme "VEUILLEZ ATTENDRE … RETRIEVING DATA …" ou quelque chose comme ça et le renvoyer lorsque les données sont affichées.

     public class Tab1Activity extends ListActivity { private Button okButton; private Button searchButton; Toast toast; String xml; private TextView searchText; private String searchTextString; HashMap<String, String> o; ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.tab1); searchButton = (Button) findViewById(R.id.search_button); searchButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub System.out.print("hello"); searchText = (TextView) findViewById(R.id.search_text); searchTextString = searchText.getText().toString(); readXml(searchTextString); } }); } private void readXml(String searchTextString1) { ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>(); String xml = XMLfunctions.getXML(); //Here XMLfunctions is class name which parse xml Document doc = XMLfunctions.XMLfromString(xml); int numResults = XMLfunctions.numResults(doc); if ((numResults <= 0)) { Toast.makeText(Tab1Activity.this, "Testing xmlparser", Toast.LENGTH_LONG).show(); finish(); } NodeList nodes = doc.getElementsByTagName("result"); for (int i = 0; i < nodes.getLength(); i++) { HashMap<String, String> map = new HashMap<String, String>(); Element e = (Element) nodes.item(i); String nameMapString = XMLfunctions.getValue(e, "name"); if ( nameMapString.toLowerCase().indexOf(searchTextString1.toLowerCase()) != -1 ) // != -1 means string is present in the search string { map.put("id", XMLfunctions.getValue(e, "id")); map.put("name", XMLfunctions.getValue(e, "name")); map.put("Score", XMLfunctions.getValue(e, "score")); mylist.add(map); } } ListAdapter adapter = new SimpleAdapter(this, mylist, R.layout.parsexml, new String[] { "name", "Score" }, new int[] { R.id.item_title, R.id.item_subtitle }); setListAdapter(adapter); final ListView lv = getListView(); lv.setTextFilterEnabled(true); lv.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { @SuppressWarnings("unchecked") HashMap<String, String> o = (HashMap<String, String>) lv .getItemAtPosition(position); Toast.makeText(Tab1Activity.this, "Name "+o.get("name")+" Clicked", Toast.LENGTH_LONG) .show(); } }); } 

  • CardView ne présente pas Shadow dans Android L
  • Obtenez JSONArray sans nom de tableau?
  • Butterknife View injection
  • Comment créer une mise en page XML générique pour toutes les activités
  • Erreur de caméra Android 1001 - Qu'est-ce que c'est que ça?
  • Impossible d'obtenir une notification push de Urban Airship
  • 5 Solutions collect form web for “Afficher ProgressDialog Android”

    Décrivez votre dialogue de progression:

     ProgressDialog progress; 

    Lorsque vous êtes prêt à commencer la boîte de dialogue de progression:

     progress = ProgressDialog.show(this, "dialog title", "dialog message", true); 

    Et de le faire disparaître lorsque vous avez terminé:

     progress.dismiss(); 

    Voici un petit exemple de thread pour vous:

     // Note: declare ProgressDialog progress as a field in your class. progress = ProgressDialog.show(this, "dialog title", "dialog message", true); new Thread(new Runnable() { @Override public void run() { // do the thing that takes a long time runOnUiThread(new Runnable() { @Override public void run() { progress.dismiss(); } }); } }).start(); 

    J'utilise le code suivant dans l'un de mes projets actuels où je télécharge des données sur internet. C'est tout dans ma classe d'activité.

     // ---------------------------- START DownloadFileAsync // -----------------------// class DownloadFileAsync extends AsyncTask<String, String, String> { @Override protected void onPreExecute() { super.onPreExecute(); // DIALOG_DOWNLOAD_PROGRESS is defined as 0 at start of class showDialog(DIALOG_DOWNLOAD_PROGRESS); } @Override protected String doInBackground(String... urls) { try { String xmlUrl = urls[0]; URL u = new URL(xmlUrl); HttpURLConnection c = (HttpURLConnection) u.openConnection(); c.setRequestMethod("GET"); c.setDoOutput(true); c.connect(); int lengthOfFile = c.getContentLength(); InputStream in = c.getInputStream(); byte[] buffer = new byte[1024]; int len1 = 0; long total = 0; while ((len1 = in.read(buffer)) > 0) { total += len1; // total = total + len1 publishProgress("" + (int) ((total * 100) / lengthOfFile)); xmlContent += buffer; } } catch (Exception e) { Log.d("Downloader", e.getMessage()); } return null; } protected void onProgressUpdate(String... progress) { Log.d("ANDRO_ASYNC", progress[0]); mProgressDialog.setProgress(Integer.parseInt(progress[0])); } @Override protected void onPostExecute(String unused) { dismissDialog(DIALOG_DOWNLOAD_PROGRESS); } } @Override protected Dialog onCreateDialog(int id) { switch (id) { case DIALOG_DOWNLOAD_PROGRESS: mProgressDialog = new ProgressDialog(this); mProgressDialog.setMessage("Retrieving latest announcements..."); mProgressDialog.setIndeterminate(false); mProgressDialog.setMax(100); mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); mProgressDialog.setCancelable(true); mProgressDialog.show(); return mProgressDialog; default: return null; } } 

    Lors de la création de l'objet pour la barre de progression, vérifiez ce qui suit.

    Cela échoue:

     dialog = new ProgressDialog(getApplicationContext()); 

    Tout en ajoutant le contexte des activités fonctionne …

     dialog = new ProgressDialog(MainActivity.this); 

    J'utilise le code suivant dans l'un de mes projets actuels où je télécharge des données sur internet. C'est tout dans ma classe d'activité.

     private class GetData extends AsyncTask<String, Void, JSONObject> { @Override protected void onPreExecute() { super.onPreExecute(); progressDialog = ProgressDialog.show(Calendar.this, "", ""); } @Override protected JSONObject doInBackground(String... params) { String response; try { HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(url); HttpResponse responce = httpclient.execute(httppost); HttpEntity httpEntity = responce.getEntity(); response = EntityUtils.toString(httpEntity); Log.d("response is", response); return new JSONObject(response); } catch (Exception ex) { ex.printStackTrace(); } return null; } @Override protected void onPostExecute(JSONObject result) { super.onPostExecute(result); progressDialog.dismiss(); if(result != null) { try { JSONObject jobj = result.getJSONObject("result"); String status = jobj.getString("status"); if(status.equals("true")) { JSONArray array = jobj.getJSONArray("data"); for(int x = 0; x < array.length(); x++) { HashMap<String, String> map = new HashMap<String, String>(); map.put("name", array.getJSONObject(x).getString("name")); map.put("date", array.getJSONObject(x).getString("date")); map.put("description", array.getJSONObject(x).getString("description")); list.add(map); } CalendarAdapter adapter = new CalendarAdapter(Calendar.this, list); list_of_calendar.setAdapter(adapter); } } catch (Exception e) { e.printStackTrace(); } } else { Toast.makeText(Calendar.this, "Network Problem", Toast.LENGTH_LONG).show(); } } } 

    Et exécutez-le dans la méthode OnCreate comme new GetData().execute();

    Où Calendar est mon calendrierActivité et j'ai également créé un CalendarAdapter pour définir ces valeurs dans une vue de liste.

    Vous ne devez pas exécuter des tâches intensives en ressources dans le thread principal. Cela rendra l'UI insensible et vous obtiendrez un ANR. Il semble que vous ferez des ressources intensives et souhaitez que l'utilisateur visualise ProgressDialog . Vous pouvez consulter http://developer.android.com/reference/android/os/AsyncTask.html pour effectuer des tâches intensives en ressources. Il vous montre également comment utiliser ProgressDialog .

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.