2014-02-24 26 views
1

如何通過編號查找列表項的根視圖?通過編號查找列表項根視圖

例如:

活動佈局:

<LinearLayout android:id="@+id/activity_root"> 
    <FrameLayout android:id="@+id/activity_2"> 
     <FrameLayout android:id="@+id/activity_3"> 
      <ListView android:id="@android:id/list" /> 
     </FrameLayout> 
    </FrameLayout> 
</LinearLayout> 

列表項的佈局:

<RelativeLayout android:id="@+id/item_root"> 
    <FrameLayout android:id="@+id/item_2"> 
     <FrameLayout android:id="@+id/item_3"> 
      <Button android:id="@+id/item_button" /> 
     </FrameLayout> 
    </FrameLayout> 
</RelativeLayout> 

現在我需要添加按鈕,點擊一些動作。我所有的是按鈕視圖。我如何獲得item_root視圖?

+0

你有一個ListView? – Blackbelt

+0

爲什麼你需要根視圖? – nikis

+0

首先學習如何創建高效佈局(RelativeLayout-FrameLayout-FrameLayout-Button),然後看看你的適配器的getView – pskink

回答

1

試試這個遞歸函數

View getParent(View view, int targetId) { 
    System.out.println(view.getId() +" == "+ targetId); 
    if (view.getId() == targetId) { 
     return view; 
    } 
    View parentView = (View) view.getParent(); 
    if (parentView == null) { 
     return null; 
    } 
    return getParent(parentView, targetId); 
} 
0

可以使用

view.getParent() 

找到外父,最外的視圖,你需要調用幾個,使檢查控制。

+0

因此,循環:'View v = startView; while(v.getId()!= R.id.item_root){v =(View)v.getParent(); }'?沒有比這更好的了嗎? – Ari

0

在使用的onClick參數即視圖獲取根視圖,並調用view.getRoot看法,但如果它比你的列表視圖可以去以下,但通過活動,即活動。這個到適配器,並找到像這樣的根視圖:

mActivity.getWindow().getDecorView().findViewById(android.R.id.content) 

任何反饋意見。