获取与当前视图共享父级的其他子级

Lar*_*ars 16 android parent

我正在创建一个表,其中每行包含文本和按钮.现在,当按下该按钮时,我想调用一个使用按钮旁边文本值的事件.如何访问该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
      }
};
Run Code Online (Sandbox Code Playgroud)

Mal*_*olm 60

如果你能得到一个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;
    }
}
Run Code Online (Sandbox Code Playgroud)

就是这样,假设你TextView的行中只有一个.

  • @MDMalik通过使用id或标签。您应该对同一视图组中的文本视图使用不同的标签,并且当找到文本视图时,将获得其标签,并查看这是否是您需要的视图。 (2认同)

Dmi*_*hin 12

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

ViewGroup row = (ViewGroup) v.getParent();
TextView textView = (TextView) row.findViewById(R.id.childID);  
Run Code Online (Sandbox Code Playgroud)