2010-02-17 87 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