Üzerinde çalıştığım proje, server dan gelen konum bilgilerini ve resmi kullarak bunları harita üzerine eklemek. Benim takıldığım nokta ise şu; Öncelikle bir thread içinde JSON dan elde ettiğim id ile farklı url lere ulaşıyorum.

Thread background = new Thread(new Runnable() {
/*..

..*/
    for (int i = 0; i < jArr.length(); i++) 
    {
    units.setId(jsnparse.getInt("id"));
    units.setUrl("........./img/avatar/"+ jsnparse.getInt("id") + ".png");
    }
/*..

..*/
}

bu url i AsyncTask sınıfına bir kere gönderdiğimde resmi indirip haritaya ekliyor. Ama AsyncTask sınıfına(DownloadImageFromUrl) döngü içinde 1 den fazla gönderdiğimde sadece onPreExecute() methodu çalışıyor ve emulator de indiriliyor diye gösteriyor ama program öylece kalıyor. Program bir hata da vermiyor.

for (int i = 0; i < unitObjectArray.length; i++) 
{
  markerLatLng = new LatLng(unitObjectArray[i].getDlati(), unitObjectArray[i].getDlongi());
  new DownloadImageFromUrl().execute(unitObjectArray[i].getUrl());
  setUpMapIfNeeded(i);
}

Yardımcı olursanız sevinirim. İyi akşamlar.

soruldu: 23 Ağu '14, 13:58

harunoguzorhan's gravatar image

harunoguzorhan
76447
cevap kabul oranı: 0%


Dostum asynctask arka planda çalıştığı için senin döngüdeki ilk çalıştırdığın task bitmeden diğer tasklari çalıştırıyorsun buda muhtemelen ilk yada son task'i sonuca götürüyor. Sana tavsiyem jsonu par edip tüm resim urllerini bir dizi içine al ve o diziyi bir kereliğine task'e gönder sonra task içinde döngüye sokarak sırayla tüm resimleri indir.İzleyeceğin yola örnek olması içinde;

List<String> imageUrls = new ArrayList<String>();
for (int i = 0; i < unitObjectArray.length; i++) {

 imageUrls.add(unitObjectArray[i].getUrl());

}

new downloadImageTask().execute(imageUrls);

taskın onPost methodunda da setup map'i çağırırsın.

permanent link

cevaplandı: 23 Ağu '14, 19:32

ihsanbal's gravatar image

ihsanbal
226114
cevap kabul oranı: 10%

1

aynen her url icin thread calistirmak sakincali sure konusunda kısıtın yoksa

(25 Ağu '14, 01:53) gturedi gturedi's gravatar image

Öncelikle teşekkür ediyorum. Önerinizi denedim ama farklı problemler çıktı. AsyncTask yerine Android-Query Library kullarak problemi çözdüm.

(25 Ağu '14, 09:40) harunoguzorhan harunoguzorhan's gravatar image

Problemimi Android-Query Library kullanarak çözdüm.

android-query-full-0.26.8.jar ı lib e ekleyip path ayarlarını yaptıktan sonra

AQuery androidQuery = new AQuery(this);

androidQuery.ajax(url, Bitmap.class, 0, new AjaxCallback<Bitmap>() {
    @Override
    public void callback(String url, Bitmap object, AjaxStatus status) 
    {
    super.callback(url, object, status);
    SetMarker(object);
    }
});

Sırası ile gelen tüm url lerden Bitmap object olarak alıyor. Ve konum bilgileri ve resimleri harita üzerine eklemeyi de

public void SetMarker(Bitmap object){
  markerLatLng = new LatLng(unitObjectArray[count].getDlati(), unitObjectArray[count].getDlongi());
  mMap.addMarker(new MarkerOptions().title("Latitude :" + markerLatLng.latitude + " and Longitude:"+      markerLatLng.longitude).icon(BitmapDescriptorFactory.fromBitmap(object)).position(markerLatLng));
         count++;
    }

metodunu kullarak çözdüm.

Benim gibi, bu problem ile karşılaşan diğer arkadaşlar varsa yardımcı olur umarım.

permanent link

cevaplandı: 25 Ağu '14, 09:53

harunoguzorhan's gravatar image

harunoguzorhan
76447
cevap kabul oranı: 0%

Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×817

Soruldu: 23 Ağu '14, 13:58

Görüntüleme: 465 kez

Son güncelleme: 25 Ağu '14, 09:53

powered by BitNami OSQA