2017-09-05 119 views
1

我有一個Android應用程序應該顯示廣告,這些廣告從服務器拉,然後他們被保存在手機上,我做了一個方法,應該顯示廣告,但不幸的是,它不工作預計很長一段時間顯示第一個圖像,然後將它遍歷他們太快我不知道爲什麼
這裏是我的方法圖像切換器工作不正常

private void startShowAds(final ArrayList<Ad> adArrayList) { 
    Handler handler = new Handler(); 
    for (int i = 0; i < adArrayList.size(); i++) { 
     Ad ad = adArrayList.get(i); 
     Runnable runnable = new Runnable() {   
      public void run() { 
       imageView.setBackgroundDrawable(getBitMap(ad.getFileUri())); 
       handler.postDelayed(this, ad.getDuration()); 
      } 
     }; 
     handler.postDelayed(runnable, ad.getDuration()); 
    } 
    startShowAds(dbHelper.getAllAdRecords(longitude, latitude)); 
} 

任何幫助將不勝感激

+0

在for循環中,您應該修復延遲的偏移量。可運行內部的'i'的含義是什麼? –

+0

已編輯對不起,我錯了 –

回答

1

試試這個:

private void startShowAds(final ArrayList<Ad> adArrayList) { 
    Handler handler = new Handler(); 
    long offset = 0; 
    for (int i = 0; i < adArrayList.size(); i++) { 
     Ad ad = adArrayList.get(i); 
     Runnable runnable = new Runnable() { 
      public void run() { 
       imageView.setBackgroundDrawable(getBitMap(ad.getFileUri()));; 
      } 
     }; 
     handler.postDelayed(runnable, offset); 
     offset += ad.getDuration(); 
    } 
} 
+0

聽起來真棒它工作完美,我現在有一個littel問題我怎麼能重複多次這個方法 –

+0

for循環外你可以添加其他runnable調用'startShowAds(adArrayList)'並啓動它推遲 –

+0

所以可以這樣做? 'new Runnable(){public void run(){startShowAds(arrayList)}}'? –