我有一个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
方法。
答案 0 :(得分:1)
如果您想获取视图的直接父级,可以调用方法getParent(),它将返回目标视图的直接父级。请注意,此方法不会直接返回视图,而是返回ViewParent。从技术上讲,ViewParent不必是View,但所有能够保存子视图的视图(即Android SDK中的“视图父级”)都是类型ViewGroup,其本身实现了ViewParent。因此实际上,所有ViewParents都是一个ViewGroup,它本身就是一个View。
此外,如果要访问直接父级之外的祖先视图,则可以递归调用getParent()并对返回的父级视图执行检查,以确定它们是否为所需的视图。