如何按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>
现在我需要在按钮点击上添加一些操作。我只有按钮视图。我如何获得item_root视图?
答案 0 :(得分:1)
试试这个递归函数
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);
}
答案 1 :(得分:0)
你可以使用
view.getParent()
找到外部父项,对于大多数外部视图,您需要调用一些并进行检查控制。
答案 2 :(得分:0)
在onClick中使用参数获取根视图,即查看并调用view.getRoot视图,但是如果它是一个列表视图,你可以去追踪但是将活动即Activity.this传递给适配器并找到这样的根视图:
mActivity.getWindow().getDecorView().findViewById(android.R.id.content)
感谢任何反馈。