2011-02-15 49 views
11

我正在創建一個表,其中每一行都包含文本以及一個按鈕。現在,當按下該按鈕時,我想調用一個使用該按鈕旁邊文本值的事件。我如何訪問該TextView的內容?我可以得到我的按鈕的ViewParent,這應該是行,但沒有辦法訪問該視圖的孩子。獲取與當前視圖共享父項的其他子項

private OnClickListener updateButtonListener = new OnClickListener(){ 
    public void onClick(View v) { 
     ViewParent parent = v.getParent(); 
     //Here I would like to get the first child of that ViewParent 
     } 
}; 

回答

53

如果你能得到一個ViewParent,然後你可以將它轉換爲一個ViewGroup並獲得您需要的View。您的代碼看起來就像這樣:

TextView textView = null; 
ViewGroup row = (ViewGroup) v.getParent(); 
for (int itemPos = 0; itemPos < row.getChildCount(); itemPos++) { 
    View view = row.getChildAt(itemPos); 
    if (view instanceof TextView) { 
     textView = (TextView) view; //Found it! 
     break; 
    } 
} 

就是這樣,假設你只有一個TextView你排。

+0

謝謝,這工作完全 – Lars 2011-02-15 14:18:06

+0

@Malcolm出色答卷。但是如果有多個textView,那麼如何選擇一個特定的textView。 – MDMalik 2012-11-07 09:34:36

10

如果你知道一個子元素的ID,那麼你可以做下一個:

ViewGroup row = (ViewGroup) v.getParent(); 
TextView textView = (TextView) row.findViewById(R.id.childID); 
相關問題