2011-02-15 47 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); 
相关问题