android中的findViewById不返回子布局

时间:2013-09-18 02:19:04

标签: android layout

我给视图充气。使用新创建的布局,我找到一个孩子来设置属性。但我得到的孩子(这里的饭菜)不是好孩子。让我的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>

1 个答案:

答案 0 :(得分:1)

  

当拥有多个具有相同ID的项目时,使用findViewById似乎不是一个好主意。

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