2017-09-05 91 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)}}'? –