如何在活动中创建计时器,可以创建TextView?

时间:2014-12-02 10:55:44

标签: android dynamic timer textview scrollview

是否可以制作一些循环计时器(例如每3秒),它控制另一个类中的参数,如果某些条件为真,那么创建TextView?

一些伪代码:

timer = new Timer();
timer.function({

   if(dataFromAnotherLogicClass.isChanged() == true) {
      newText = createNewTextField;
      setText("new field...");
      insertInVectorArray(newText);
      scrollView.addView(newText);
   }

}, 3000);

有可能吗? 我试过这个:

ScrollView content = (ScrollView)this.findViewById(R.id.scrollView);


        timer.scheduleAtFixedRate(new TimerTask() {
            @Override
            public void run() {
                if(true) {
                  final TextView tempText = new TextView(I_DONT_KNOW_HOW_TO_SET_CONTEXT_HERE);
                  //android studio said tempText must be final :/
                  tempText.setText("Činnosť.."); //so this is not good
                  content.addView(tempText);

                  textViews.add(tempText);
                }
            }
        }, 3000, 3000);

请帮忙

1 个答案:

答案 0 :(得分:1)

是可能但你在主线程上添加了视图     在Scroll视图中,只需将LinearLayout和下一个视图添加到LinearLayout中,而不是滚动视图

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

创建并添加textview像这样

 private void addNewView() {
     TextView myTxt = new TextView(this);
     LinearLayout.LayoutParams parms = new LinearLayout.LayoutParams(105, 105);
     parms.setMargins(5, 5, 5, 5);
     myTxt.setLayoutParams(parms);
     myTxt.setText("");
     view.addView(myTxt);
}

更新-1

像这样使用timertask,它会递归调用setTimer,当命中时间然后添加你的视图

private void setTimer() {
    if (mTimer != null) {
        mTimer.cancel();
        mTimer = null;
    }
    if (mTimer == null) {
        mTimer = new Timer();
        mTimer.schedule(new TimerTask() {
            public void run() {
                MainActivity.this.runOnUiThread(new Runnable() {

                    @Override
                    public void run() {
                        addNewView();
                        setTimer()
                    }
                });

            }
        }, 5000);
    }
}

我希望它适合你