xml vs以编程方式执行

时间:2013-10-03 15:39:06

标签: android xml

我正在开发一个Android应用程序。应用程序应该有项目列表。它看起来有点如下:sample

问题是我需要以上述方式列出大约40个项目。我可以使用xml文件中的相对布局来做到这一点。但它太长了。例如,仅创建3个项目,我的代码看起来很像下面(更不用说40):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/tvb" >

        <ImageView
            android:id="@+id/image_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="3dp"
            android:adjustViewBounds="true"
            android:maxHeight="60dp"
            android:maxWidth="100dp"
            android:scaleType="fitCenter"
            android:src="@drawable/tomato" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@id/image_view"
            android:text="Tomato"
            android:textColor="#000000"
            android:textSize="25dp"
            android:textStyle="bold" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:text="20gm"
            android:textColor="#000000"
            android:textSize="20dp"
            android:textStyle="bold" />
    </RelativeLayout>
    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/tvb" >

        <ImageView
            android:id="@+id/image_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="3dp"
            android:adjustViewBounds="true"
            android:maxHeight="60dp"
            android:maxWidth="100dp"
            android:scaleType="fitCenter"
            android:src="@drawable/begun" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@id/image_view"
            android:text="Begun"
            android:textColor="#000000"
            android:textSize="25dp"
            android:textStyle="bold" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:text="45gm"
            android:textColor="#000000"
            android:textSize="20dp"
            android:textStyle="bold" />
    </RelativeLayout>
    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/tvb" >

        <ImageView
            android:id="@+id/image_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="3dp"
            android:adjustViewBounds="true"
           android:maxHeight="60dp"
            android:maxWidth="100dp"
            android:scaleType="fitCenter"
            android:src="@drawable/potol" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@id/image_view"
            android:text="Potol"
            android:textColor="#000000"
            android:textSize="25dp"
            android:textStyle="bold" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:text="35gm"
            android:textColor="#000000"
            android:textSize="20dp"
            android:textStyle="bold" />
    </RelativeLayout>

</LinearLayout>

但是我可以复制并粘贴它,然后休息37项。但这真的很有效率。这意味着获取xml文件太长了...它真的很有效...... 再次在java中执行它可能会减慢代码速度。因为我也需要为每个列表项添加图像。

我期待一个好的指导方针。有人可以建议吗?

2 个答案:

答案 0 :(得分:2)

将ListView与ListViewAdapter一起使用。 这是一本优秀而完整的教程http://www.vogella.com/articles/AndroidListView/article.html

答案 1 :(得分:0)

您可以为行创建单独的布局xml,然后根据需要将其包含在主布局中.-

<强> _row.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/tvb" >

    <ImageView
        android:id="@+id/image_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="3dp"
        android:adjustViewBounds="true"
        android:maxHeight="60dp"
        android:maxWidth="100dp"
        android:scaleType="fitCenter"
        android:src="@drawable/tomato" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/image_view"
        android:text="Tomato"
        android:textColor="#000000"
        android:textSize="25dp"
        android:textStyle="bold" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:text="20gm"
        android:textColor="#000000"
        android:textSize="20dp"
        android:textStyle="bold" />
</RelativeLayout>

<强> main_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <include
        android:id="@+id/row1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        layout="@layout/_row" />

    <include
        android:id="@+id/row2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        layout="@layout/_row" />

    ...

</LinearLayout>

请注意,对于动态列表,最好选择ListView,或者如果您的列表是“静态”,则至少需要使用ScrollView