大家都在我的应用程序中使用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++;
}
}
答案 0 :(得分:2)
您已在线程块中定义并初始化int k=0;
,因此每次运行时,k将始终为0,因此您必须在外部定义它。
另外
if(array[++k]!= null)
{
k++;
}
将增加k两次:一次用于if
测试,一次用于块
你想要的是:
if(k != array.length - 1) k++;