Android 按id查找列表项根视图

Android 按id查找列表项根视图,android,android-layout,android-view,Android,Android Layout,Android View,如何按id查找列表项的根视图 例如: 活动布局: <LinearLayout android:id="@+id/activity_root"> <FrameLayout android:id="@+id/activity_2"> <FrameLayout android:id="@+id/activity_3"> <ListView android:id="@android:id/list" />

如何按id查找列表项的根视图

例如:

活动布局:

<LinearLayout android:id="@+id/activity_root">
    <FrameLayout android:id="@+id/activity_2">
        <FrameLayout android:id="@+id/activity_3">
            <ListView android:id="@android:id/list" />
        </FrameLayout>
    </FrameLayout>
</LinearLayout>

列表项布局:

<RelativeLayout android:id="@+id/item_root">
    <FrameLayout android:id="@+id/item_2">
        <FrameLayout android:id="@+id/item_3">
            <Button android:id="@+id/item_button" />
        </FrameLayout>
    </FrameLayout>
</RelativeLayout>

现在我需要添加一些按钮点击操作。我只有按钮视图。如何获取项目根视图?

您可以使用

view.getParent() 

要查找外部父视图,对于大多数外部视图,您需要调用一些并进行检查控制。

尝试此递归函数

 View getParent(View view, int targetId) {
    System.out.println(view.getId() +" == "+ targetId);
    if (view.getId() == targetId) {
        return view;
    }
    View parentView = (View) view.getParent();
    if (parentView == null) {
        return null;
    }
    return getParent(parentView, targetId);
}

在onClick中,使用参数i.e view和call view.getRoot view获取根视图,但如果是列表视图,则可以执行以下操作,但将活动i.e activity.this传递给适配器,并按如下方式查找根视图:

mActivity.getWindow().getDecorView().findViewById(android.R.id.content)

非常感谢您的反馈。

您有列表视图吗?为什么需要根视图?首先学习如何创建高效的布局(RelativeLayout FrameLayout按钮),然后查看您的adapter@nikis我想在单击按钮时添加一些动画。@pskink这是一个例子。我的代码中没有这些布局;而(v.getId()!=R.id.item_root){v=(视图)v.getParent();}?没有比这更好的了?