Android 如何从子视图获取祖先视图?
Android how to get an ancestor view from a child view?
我有一个带有自定义数组适配器的 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
方法。
如果您想获取视图的直接父视图,可以调用方法 getParent() and it will return immediate parent of the target view. Note, this method doesn't directly return a view but instead a ViewParent. ViewParent does not technically need to be a View but all views capable of holding child views i.e. a "view parent" in the Android SDK are of type ViewGroup,该方法本身实现了 ViewParent。所以实际上所有的 ViewParents 都是一个 ViewGroup,它本身就是一个 View。
此外,如果您想访问直接父视图之外的祖先视图,您可以递归调用 getParent() 并对 return 父视图执行检查以确定它们是否是所需视图。
我有一个带有自定义数组适配器的 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
方法。
如果您想获取视图的直接父视图,可以调用方法 getParent() and it will return immediate parent of the target view. Note, this method doesn't directly return a view but instead a ViewParent. ViewParent does not technically need to be a View but all views capable of holding child views i.e. a "view parent" in the Android SDK are of type ViewGroup,该方法本身实现了 ViewParent。所以实际上所有的 ViewParents 都是一个 ViewGroup,它本身就是一个 View。
此外,如果您想访问直接父视图之外的祖先视图,您可以递归调用 getParent() 并对 return 父视图执行检查以确定它们是否是所需视图。