安卓组件嵌套多层时获取父组件的方法

在组件包含多层的时候获取子组件可以用findViewById(id),而获取父组件可以用getParent(),但是getParent()不能获取爷爷组件,需要写多个getParet().getParent()...。

比如父子关系为 ParentView-Child1->Child2->Me。

其中Me 为操作的对象比如Button,就是自己。ParentView为要找的父对象,Child1为ParentView的子组件,Child2为Child1的子组件,Me 为Child2的子组件。

1.设置Tag:

ParentView pv=new ParentView();
Me me=new Me();
me.setTag(pv);

 

在想要获取父组件的时候 :

ParentView target=(ParentView)me.getTag();

 

2.递归方法

 

findParentRecursively(View view, int targetId) {
    if (view.getId() == targetId) {
        return view;
    }
    View parent = view.getParent();
    if (View == null) {
        return null;
    }
    return findParentRecursively(parent, targetId);
}
 

参考地址:http://stackoverflow.com/questions/14190864/find-parent-view-by-id

猜你喜欢

转载自xeyex.iteye.com/blog/1941186