以编程方式将组件添加到现有xml文件

时间:2012-07-07 19:14:06

标签: android xml listview layout

我有一个已经用XML定义的布局。我想向它添加一个ListView,它显示保存文件中的可变数据。

数据的大小不固定,用户可以编辑现有数据,因此我不确定您是否可以将其存储在res中。

由于我缺乏知识,我觉得以编程方式创建布局组件更有利(listview),而其他组件通过xml文件更好。

有没有办法可以同时使用xml和java来创建布局?感谢。

2 个答案:

答案 0 :(得分:1)

您仍应将ListView放入xml文件中。通过在java中定义适配器并加载所需的任何数据,可以使其动态化。

将ListView添加到XML不会消除您使用动态数据填充它的能力。

答案 1 :(得分:1)

您实际上不需要动态创建ListView。

您可以在xml文件中以静态方式定义ListView。在您的Java代码中,您需要将适配器附加到该ListView,您的列表将自动拥有与适配器中一样多的项目。

我认为您可能需要通过ListView的一些基本示例来完全理解我想说的内容。

检查此链接以获取ListView上的分步教程:http://www.mkyong.com/android/android-listview-example/

因为你的问题实际上是关于动态地向添加元素(你不需要这样做来实现你想要用ListView做的事情。我只是为了你的知识而回答),这是你如何做到的:

        TextView textView = new TextView(YourClass.this);

        textView.setLayoutParams(....); // specify the Layout Parameters

        textView.setPadding(60, 10, 0, 10);
        textView.setTextAppearance(getBaseContext(), R.style.TitleTextStyle);

如果要在任何布局中创建多个项目,请参阅以下示例代码,该代码在动态创建的LinearLayout中添加Image和TextView。

    LinearLayout ll = new LinearLayout(this);
    ll.setOrientation(1);
    ImageView iv1 = new ImageView(this);
    iv1.setImageResource(R.drawable.control);
    TextView txtTab1 = new TextView(this);
    txtTab1.setText("BLah Blah BLAh");
    txtTab1.setPadding(8, 9, 8, 9);
    txtTab1.setTextColor(Color.parseColor("#8B4513"));
    txtTab1.setTextSize(30);
    txtTab1.setBackgroundResource(R.drawable.control);
    txtTab1.setGravity(Gravity.CENTER_HORIZONTAL);

    ll.addView(iv1,0);
    ll.addView(txtTab1,1);