Android 如何在ListView适配器中获取list\u view\u item.xml的根视图?

Android 如何在ListView适配器中获取list\u view\u item.xml的根视图?,android,android-layout,Android,Android Layout,我有一个ListView项目/单元,它有几个层,相对层,线性层等等。 我试着在点击按钮的内部执行v.getParent(),但它只上升了一层。如何在onClick事件处理程序中获取对当前元素根的引用 这是我的getView() 我想象这个按钮在ListView元素中。基于这一假设: 只创建一个OnClick侦听器。您这样做的方式是创建adapter.getCount()OnClick listener并疯狂地浪费内存 也许您想完全删除按钮并使用OnItemClick跟踪整个ListView元素上

我有一个ListView项目/单元,它有几个层,相对层,线性层等等。 我试着在点击按钮的内部执行v.getParent(),但它只上升了一层。如何在onClick事件处理程序中获取对当前元素根的引用

这是我的getView()


我想象这个按钮在ListView元素中。基于这一假设:

  • 只创建一个OnClick侦听器。您这样做的方式是创建
    adapter.getCount()
    OnClick listener并疯狂地浪费内存

  • 也许您想完全删除按钮并使用OnItemClick跟踪整个ListView元素上的单击,这将传递给您整个视图的引用

  • 如果确实必须使用该按钮,则在getView中存储对父级的引用,类似于:

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // do whatever you're doing to get the view, let's call it v
        Button b = (Button)v.findViewById(/* your button id */ )
        b.setTag(v)
    }
    
  • 然后单击“侦听器”,您可以:

        onClic(View v){
            View parent = (View)b.getTag();
        }
    

    如果这个答案对你有效(我知道是的),请接受丹尼尔·马丁内斯指出的正确答案。

    这是一个很好的答案!我可能会发布一个自己的答案来回答这个问题,所以时间不多了…无论如何,谢谢丹尼尔!下次你问问题的时候,我相信每个人都会回答!成功了!我现在感觉好多了!是的,但我认为v.getRootView()会一直走到顶端。然后使用该视图来查找它。但是如果它是一个适配器,它是从XML扩展而来的,并且所有视图都具有相同的ID,那么如何查找它呢?我会告诉你怎么做,用我刚刚发布的答案。在b.setTag(v)上,你应该发布b.setTag(convertView)等等。注意语法!仔细观察,我认为你是对的。有必要跟踪特定的关联视图。代码注释清楚地说明了
    //无论你做什么都可以获得视图,让我们称之为v
    ,我告诉你我称之为
    v
    ,你必须适应你正在使用的任何东西。没有这样的方法
    v.getViewParent()
     Inside onClick(View v)
    
    just call v.getViewParent();  then you will have a view from which you can call the find for   the others.  
    
     Inside onClick(View v)
    
    just call v.getViewParent();  then you will have a view from which you can call the find for   the others.