2010-02-17 94 views
-1

大家好我的應用程序通過使用web服務我從數據庫中獲取數據並將數據存儲在哈希表中。我將這些數據從hast表中取出到array.this數組數據可以是顯示在button.My數組包含10個元素。對於我使用視圖flipper的動畫。現在我想要做的是每10秒顯示一個又一個按鈕上的數組元素。但在Updater方法中,我沒有得到所有數組元素。如何在解決這一如何從android中的數組列表中獲取元素

我發送我的代碼 //上創建方法,我穿這一個

user_advertise是哈希表

     System.out.println(""+user_advertise.size()); 
      array=new String[user_advertise.size()]; 

      e= user_advertise.keys(); 

      int i = 0; 
      int j=0; 
      for(i=user_advertise.size();;i++){ 
      array[j]=e.nextElement().toString(); 


      LinearLayout layout = (LinearLayout) findViewById(R.id.LinearLayout01); 

      LinearLayout.LayoutParams p = new LinearLayout.LayoutParams( 
           LinearLayout.LayoutParams.FILL_PARENT, 
           LinearLayout.LayoutParams.WRAP_CONTENT 
         ); 


      Button buttonView = new Button(this); 
      buttonView.setText("" +array[i]); 


      Timer timing = new Timer(); 
      timing.schedule(new Updater(buttonView), 3000, 3000); 

      ViewFlipper flipper = new ViewFlipper (this); 
      flipper.addView(buttonView); 
      layout.addView(flipper,p); 
      flipper.startFlipping(); 
      flipper.setClickable(true); 
      flipper.setFlipInterval(10000); 
      flipper.setInAnimation(AnimationUtils.loadAnimation(this,R.anim.push_left_in)); 
      flipper.setOutAnimation(AnimationUtils.loadAnimation(this,R.anim.push_left_out)); 


      } 

      }catch(Exception e) 
      { 
       Log.v("Add",e.toString()); 

      } 

    } 
private class Updater extends TimerTask { 
    private final Button buttonView; 

    public Updater(Button buttonView) { 
     this.buttonView = buttonView; 
    } 

    public void run() { 
     buttonView.post(new Runnable() { 


      public void run() { 

       int k=0; 

        buttonView.setText(" "); 

        buttonView.setText(""+array[k].toString()+""); 

       if(array[++k]!= null) 
       { 
        k++; 
       } 

      } 

回答

2

您已經在線程塊中定義並初始化了int k=0;,所以每次運行時,k總是0,因此您必須在外部定義它。

而且

if(array[++k]!= null) 
{ 
    k++; 
} 

將增加兩倍ķ:一個用於if測試,一個在塊

你想要的是:

if(k != array.length - 1) k++; 
+0

非常感謝你 – deepthi 2010-02-18 09:42:07