0

我有一个已经在 XML 中定义的布局。我想添加一个 ListView 来显示保存文件中的变量数据。

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

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

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

4

2 回答 2

1

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

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

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

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

由于您的问题实际上是关于向 xml 动态添加元素(您不需要这样做来实现您想要对 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);
于 2012-07-07T19:35:25.947 回答
1

您仍然应该将 ListView 放入您的 xml 文件中。您可以通过在 java 中定义一个 Adapter 并加载您想要的任何数据来使其动态化。

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

于 2012-07-07T19:23:49.913 回答