是否可以制作一些循环计时器(例如每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);
请帮忙
答案 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);
}
}
我希望它适合你