如何从android中的数组列表中获取元素

时间:2010-02-17 12:32:32

标签: android

大家都在我的应用程序中使用Web服务我从数据库中获取数据并将数据存储在哈希表中。我将数据从hast表中取出到array.this数组数据可以显示在button.My数组包含10个元素。对于动画,我使用了视图翻板。现在我想做的是每隔10秒一个接一个地显示按钮上的数组元素。但是在Updater方法中我没有得到所有数组元素。如何解决这个问题

我正在发送我的代码 //在创建方法中我穿了这个

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++;
                }

            } 

1 个答案:

答案 0 :(得分:2)

您已在线程块中定义并初始化int k=0;,因此每次运行时,k将始终为0,因此您必须在外部定义它。

另外

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

将增加k两次:一次用于if测试,一次用于块

你想要的是:

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