2016-08-29 147 views
1

我想要使用Picasso定期显示来自URL的图像。它显示单个图像很好,但是当我循环它时,它会产生错误或不显示。我在这里贴上我的代码,不显示任何图像图像视图循环毕加索加载url图像

public class Main extends AppCompatActivity { 

    Integer i=1; 
    String adurl = "http://mywebsite.com/img"; 
    String nADURL; 
    private Context mContext; 
    private int index = 0; 
    private final int interval = 3000; 
    private final int DURATION = 1500; 
    ImageView iv; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     //Initializing the ImageView 
     iv = (ImageView) findViewById(R.id.ivAdd); 

     showAd9 sh = new showAd9();  
     sh.execute("3000"); 
    } 

    public class showAd9 extends AsyncTask<String, String, String> { 

     @Override 
     protected String doInBackground(String... params) { 

       nADURL = adurl.toString() + String.valueOf(i) + ".png"; 
       try { 
        int time = Integer.parseInt(params[0]); 
        while(i<=4) { 
         Picasso.with(main.this).load(nADURL).skipMemoryCache().error(R.drawable.wrong).into(iv); 
         i++; 
         Thread.sleep(time); 
        } 

       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      return null; 
     } 

     @Override 
     protected void onPostExecute(String result) { 
     } 
    } 
+1

你不应该从后台线程调用毕加索加载到。你不需要照顾穿线,毕加索为你做。 – lionscribe

回答

2

您的解决方案不是直接的 - 我认为这是更好地做到这一点的东西与Handler帮助。重点是你从后台线程加载毕加索。 Picasso为您处理此问题,只需安排您的间隔Handler.postDelayed() - 这应该解决您的问题。

+0

谢谢它的工作 –