在android上动态创建按钮

时间:2014-02-01 23:41:55

标签: java android

我正在尝试动态创建按钮,虽然代码使用线性布局来设置一个按钮,我的代码运行不会给出任何错误,也不会抛出任何异常或任何东西,但我得到的只是一个空屏幕。提前谢谢。

private void runThreadCreateButton(final List<Stop> stops) {

    new Thread() {
        public void run() {
            int i=0;
            while (i++ < 1) {
                try {
                    runOnUiThread(new Runnable() {

                        @Override
                        public void run() {
                            for(int j=0;j<stops.size();j++)
                            {
                                Button myButton = new Button(getApplicationContext());
                                myButton.setText(stops.get(j).getName());

                                LinearLayout ll = new LinearLayout(getApplicationContext());

                                LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
                                ll.addView(myButton, lp);
                            }
                        }
                    });
                    Thread.sleep(1000);
                } catch (Exception e) {
                   System.out.println(e.getMessage());
                }
            }
        }
    }.start();
}

2 个答案:

答案 0 :(得分:1)

您创建了一个新的布局,但您没有将Activity设置为显示您的布局。使用新布局在主活动上调用setContentView()

LinearLayout ll = new LinearLayout(getApplicationContext());
LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
ll.addView(myButton, lp);
//add something like this
yourMainActivity.setContentView(ll);

答案 1 :(得分:1)

好吧,如果你没有在你的活动中添加你的布局,这就是你的主要问题。

但是,您应该了解如何在xml中编写布局。这使您的代码更具可读性和可维护性。此外,您无需担心始终切换线程。

如果需要使用运行时数据填充视图,则应使用列表视图和列表适配器。 ListViews和ListAdapters是几乎所有Android应用程序的基本要素,所以你应该真正了解它们。如果您希望列表项包含更复杂的布局,可以通过实现自己的自定义列表适配器来实现。

使用列表视图时,您还可以进行大量性能调整。 对于大多数用例,从代码生成和管理布局不是一个好方法。