0

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

问题是我需要以上述方式列出大约 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 中这样做可能会减慢代码速度。因为我也需要为每个列表项添加图像。

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

4

2 回答 2

2

将 ListView 与 ListViewAdapter 一起使用。这是一个很好的完整教程http://www.vogella.com/articles/AndroidListView/article.html

于 2013-10-03T15:50:47.150 回答
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>

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

于 2013-10-03T15:47:28.630 回答