0

我夸大了一个视图。使用新创建的布局,我找到一个孩子来设置一个属性。但是我得到的孩子(这里的饭名)不是好孩子。让我的mealList 包含多个mealName,它始终是返回的第一个。

RelativeLayout mealNameLayout = (RelativeLayout) inflater.inflate(R.layout.planner_list_item_meal_title, mealList);
TextView mealName = (TextView) mealNameLayout.findViewById(R.id.mealName);

//Set meal name.
mealName.setText(meal.name);

如您所见,mealNameLayout 只有一个具有“mealName”id 的孩子。

知道发生了什么吗?

名单膨胀:

<LinearLayout
        android:padding="3dip"
        android:id="@+id/mealList"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

    </LinearLayout>

并添加了项目:

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/mealName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        android:text="meatballs"
        android:textColorLink="@android:color/darker_gray"
        android:textSize="16sp" />

</LinearLayout>

4

1 回答 1

1

看起来当有多个具有相同 id 的项目时使用 findViewById 不是一个好主意。

是的,这是个坏主意。考虑重新设计布局以避免在一个视图中出现多个相同的 id。

于 2013-09-18T02:37:48.657 回答