私は最終的なプロジェクトを作っていますが、立ち往生しています。 は私がfor forroid in android
final List<Results> ListStadium=response.body().getResults();
for(int i=0;i<ListStadium.size();i++)
{
final Double latStadium,longStadium;
final String nameStadium;
latStadium = Double.parseDouble(ListStadium.get(i).getLatitude()); // *1
longStadium=Double.parseDouble(ListStadium.get(i).getLongitude()); //*2
nameStadium=ListStadium.get(i).getName(); //*3
//////////////////////////////////////////////
mapFragment.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(final GoogleMap googleMap) {
googleMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN);
googleMap.getUiSettings().setZoomGesturesEnabled(true);
gpsTracker = new GPSTracker(UserDashboard.this);
// check if GPS enabled
if(gpsTracker.canGetLocation()){
double latitude = gpsTracker.getLatitude();
double longitude = gpsTracker.getLongitude();
Log.e("Long: ",longitude+"");
Log.e("Lat: ",latitude+"");
googleMap.addMarker(new MarkerOptions()
.position(new LatLng(latStadium,longStadium))
.title(nameStadium)
.snippet(GlobalVariable.Stadium_ID)
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)));
googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(10.7886087,106.6974835), 10));
googleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
GlobalVariable.Stadium_ID=marker.getSnippet();
Toast.makeText(getApplicationContext(), marker.getTitle()+ " Here !", Toast.LENGTH_LONG).show();
Intent intent = new Intent(UserDashboard.this,StadiumDetail.class);
startActivity(intent);
return false;
}
});
progressDialog.dismiss();
}else{
// can't get location
// GPS or Network is not enabled
// Ask user to enable GPS/network in settings
gpsTracker.showSettingsAlert();
}
}
});
}
しかし、プログラムが終了実行すると、それは私ではなくはmapFragment.getMapAsync()を実行し、自動増加* 1 * 2 * 3このループを実行し、以下のコードのようなループのためのリストと持っています。誰が私を助けられるか ?
名前に基づいて、その非同期呼び出し。つまり、別のスレッドで発生し、返される前に結果を待つことはありません。マルチスレッドアプリケーションの作成方法については、読んでおく必要があります。 –