Montrant la barre de progression lors du chargement d'une Liste
Ok Maintenant j'avoue que je suis nouveau à l'aide de la barre de progression enfaite je ne l'utilise jamais, mais maintenant, j'ai besoin de l'utiliser
J'ai une activité (Principale) et un menu qui permet de commencer 6 nouvelle activité. À partir de ces activités, il est une activité qui charge les données dans une liste il prendre 3-4 seconde à se charger .Cette activité parser le json et de transmettre les données vers une autre activité. Comment puis-je afficher la barre de progression dès que l'utilisateur clique sur l'option de menu pour cette activité et qui disparaissent quand la Liste sera chargé.
Ici est la activiy
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final Intent intent=new Intent(this ,GetLatAndLng.class);
setContentView(R.layout.listplaceholder);
//ProgressBar pb=(ProgressBar)findViewById(R.id.progressbar);
LocationManager locationManager;
String context=Context.LOCATION_SERVICE;
locationManager=(LocationManager)getSystemService(context);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(true);
criteria.setPowerRequirement(Criteria.POWER_LOW);
String provider = locationManager.getBestProvider(criteria, true);
Location location = locationManager.getLastKnownLocation(provider);
final LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
updateWithNewLocation(location);
}
public void onProviderDisabled(String provider){
updateWithNewLocation(null);
}
public void onProviderEnabled(String provider){ }
public void onStatusChanged(String provider, int status,
Bundle extras){ }
};
updateWithNewLocation(location);
locationManager.requestLocationUpdates(provider, 2000, 10,
locationListener);
double geoLat = location.getLatitute();
double geoLng = location.getLongitude();
Bundle b=new Bundle();
//pb.setVisibility(View.VISIBLE);
ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
JSONObject json = JSONFunction.getJSONfromURL(getUrl());
Log.v(TAG, "got the json");
try{
JSONArray JArray = json.getJSONArray("results");
Log.v(TAG, "getting results");
for(int i=0;i<JArray.length();i++){
HashMap<String, String> map = new HashMap<String, String>();
JSONObject e = JArray.getJSONObject(i);
JSONObject location1=e.getJSONObject("geometry").getJSONObject("location");
latitude[i]=location1.getDouble("lat");
longitude[i]=location1.getDouble("lng");
reference[i]=e.getString("reference");
Log.v(TAG, reference[i]);
distance[i]=GetLatAndLng.gps2m(geoLat, geoLng,latitude[i] ,longitude[i]);
map.put("id", String.valueOf(i));
map.put("name", "" + e.getString("name"));
map.put("vicinity", "Address " + e.getString("vicinity")+" "+"Disance:"+distance[i]);
mylist.add(map);
}
}catch(JSONException e) {
Log.e("log_tag", "Error parsing data "+e.toString());
}
// pb.setVisibility(View.GONE);
b.putStringArray("key", reference);
intent.putExtras(b);
Log.v(TAG, ""+reference);
ListAdapter adapter = new SimpleAdapter(this, mylist , R.layout.listview,
new String[] { "name", "vicinity", },
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(JsonExampleActivity.this, "ID '" + o.get("id") + "' was clicked.", Toast.LENGTH_SHORT).show();
intent.putExtra("clickedid",position);
startActivity(intent);
}
});
}
public void updateWithNewLocation(Location location2) {
if(location2!=null) {
double geoLat = location2.getLatitude();
double geoLng = location2.getLongitude();
}
}
Merci d'Avance!!
OriginalL'auteur john smith | 2011-11-17
Vous devez vous connecter pour publier un commentaire.
Utilisation
AsyncTask
pour charger des données en arrière-plan tout en montrant l'indicateur de chargement. DansAsyncTask's
doInBackground
de la méthode , processus de JSON ou quelque chose qui prend du temps.Dans votre Activité est
onCreate()
exécuterAsyncTask
java.lang.IllegalArgumentException: View not attached to window manager
sur leprogressDialog.dismiss ( )
ligne lors de l'orientation de l'écran change lorsque la boîte de dialogue est affichée.OriginalL'auteur Arslan
Pour ce type d'opération, vous devez utiliser
AsyncTask
avec qui vous pouvez afficher boîte de dialogue de progression , pendant qu'il se charge.La tutoriel officiel est assez utile. Regardez dans le
onPostExecute()
méthode pour trouver comment mettre fin à toute sorte de barre de progression vous pourriez avoir.Espère que cela aide
Oui, vous pouvez, dans onPostExecute méthode, vous pouvez utiliser l'INTERFACE utilisateur opérations et peut transmettre les données à l'autre activité..
OriginalL'auteur Udaykiran
Vous devriez le faire avec une AsyncTask et afficher une boîte de dialogue de progression dans le onPreExecuteMethod et la rejeter sur onPostExecute:
OriginalL'auteur Fernando Gallego
peut-être que ça va aider. J'utilise BroadcastReceiver de mettre à jour ListView dans mon application.
onPostExecute AsyncTask
Récepteur à Activité
Disposition
Activité
OriginalL'auteur pwb
Vous pouvez le faire en ajoutant une propriété à votre Activité:
Puis il suffit d'utiliser ce code pour afficher votre boîte de dialogue:
Puis ajoutez-le lorsque vous voulez supprimer:
Également ajouter à votre onStop ces lignes (seulement dans le cas où l'utilisateur existe l'Activité):
OriginalL'auteur SERPRO