gpt4 book ai didi

Android:在单独的线程中将许多子项添加到布局

转载 作者:行者123 更新时间:2023-11-29 01:54:36 32 4
gpt4 key购买 nike

我有一个包含多个子项的 Button 和 GridLayout Activity 。如果我在 onCreate() 中添加所有这些子项,我的 Activity 会出现在屏幕上,但会有延迟:

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

LinearLayout main = new LinearLayout(this);
main.setOrientation(LinearLayout.VERTICAL);

Button button = new Button(this);
button.setText("test");
main.addView(button);

GridLayout testGrid = new GridLayout(this);
testGrid.setColumnCount(5);
for (int i = 0; i < 100; i++)
testGrid.addView(new Button(this));
main.addView(testGrid);

setContentView(main);
}

但我至少希望我的 Buttton 立即出现,所以我尝试将子项添加到线程中的网格中。经过实验,我得出了这个解决方案:

    final GridLayout testGrid = new GridLayout(this);
testGrid.setColumnCount(5);
main.addView(testGrid);
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
new Thread(new Runnable() {
public void run() {
for (int i = 0; i < 100; i++)
MyActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
testGrid.addView(new Button(testGrid.getContext()));
}
});
}
}).start();
}
}, 1);

但我不确定这是个好主意,因为它看起来有点复杂,而且可能无法在某些设备上正常运行。有更好的建议吗?

最佳答案

当你必须做这样的事情时,这是一个明确的迹象表明你做错了什么。如果您确实需要在一个网格中放置 100 个按钮,也许您应该考虑使用 GridView 而不是 GridLayout 并通过一个简单的适配器将按钮加载到 View 中。

关于Android:在单独的线程中将许多子项添加到布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15919321/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com