的xml:
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main_table"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</TableLayout>
活动示例代码:
public class SecondActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
TableLayout tl = (TableLayout) findViewById(R.id.main_table);
TableRow trHead = new TableRow(this);
trHead.setId(10);
trHead.setBackgroundColor(Color.GRAY);
trHead.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT));
TextView col1Header = new TextView(this);
col1Header.setText("Time");
col1Header.setTextColor(Color.CYAN);
trHead.addView(col1Header);
TextView col2Header = new TextView(this);
col2Header.setText("Company");
col2Header.setTextColor(Color.CYAN);
col2Header.setGravity(Gravity.END);
trHead.addView(col2Header);
tl.addView(trHead, new TableLayout.LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
for (int i = 0; i < 3; i++) {
TableRow row = new TableRow(this);
row.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT));
TextClock clock = new TextClock(this);
row.addView(clock);
TextView data = new TextView(this);
data.setText("dev" + 1);
data.setGravity(Gravity.END);
row.addView(data);
tl.addView(row, new TableLayout.LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
SystemClock.sleep(1000);
}
}
}
}
SystemClock.sleep(1000);
无法满足我的需求。
整个表在3秒后在UI上显示。但我希望在UI上1分钟后添加行。
答案 0 :(得分:0)
3秒后全表apper,因为SystemClock.sleep接收miliseconds作为参数。 (1分钟= 60000毫秒)。
另一种方法是使用Runnable
Runnable r = new Runnable() {
public void run() {
//Add row
}
};
调用runnable:
Handler handler = new Handler();
handler.postDelayed(r, 60000);
答案 1 :(得分:0)
问题是你在onCreate()
内睡觉了。这会阻止UI线程,因此只有 sleep()
返回后才能呈现任何内容。这意味着数据库将立即更新和呈现。要执行实际延迟,您需要使用某种类型的并发。在最低级别,您可以创建新的Thread
或Runnable
。在更高级别,您可以使用AsyncTask
。还有更高级别的抽象可用,但这两个选项应该让你开始正确的方向。
答案 2 :(得分:0)
for(int i=1;i<=3;i++){
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
//add row
}
});
}
},i*60000);
}