Android如何从子视图中获取祖先视图?

时间:2019-08-20 12:34:53

标签: android onclick android-arrayadapter onclicklistener

我有一个Foo类型的列表,带有一个自定义数组适配器。我希望能够在数组适配器的一个视图中单击一个子元素,并返回我单击的类型为Foo的视图。

这是我单击子元素的方式:

// fill array with a test set of objects
final ArrayList<Foo> locations = Foo.getTestingList();

final myCustomArrayAdapter adapter = new myCustomArrayAdapter(rootView.getContext(), myarrayList);
         adapter.setDefaultRequestBtnClickListener(new View.OnClickListener(){
             @Override
             public void onClick(View v){
                    //if child element is clicked
                    if(v.getId() == R.id.deleteBTN){
                        //tag is set to the position in my custom adapter
                        int pos = (Integer)v.getTag();

                       //Get this child's parent view (type foo)


                    }

             }
         });

我希望能够在我刚刚单击的子视图的Foo父级上使用某些Foo方法。

1 个答案:

答案 0 :(得分:1)

如果您想获取视图的直接父级,可以调用方法getParent(),它将返回目标视图的直接父级。请注意,此方法不会直接返回视图,而是返回ViewParent。从技术上讲,ViewParent不必是View,但所有能够保存子视图的视图(即Android SDK中的“视图父级”)都是类型ViewGroup,其本身实现了ViewParent。因此实际上,所有ViewParents都是一个ViewGroup,它本身就是一个View。

此外,如果要访问直接父级之外的祖先视图,则可以递归调用getParent()并对返回的父级视图执行检查,以确定它们是否为所需的视图。