Получить другого дочернего элемента, который разделяет родительский элемент с текущим представлением

Я создаю таблицу, в которой каждая строка содержит текст, а также кнопку. Теперь, когда эта кнопка нажата, я хочу вызвать событие, которое использует значение текста рядом с кнопкой. Как я могу получить доступ к содержимому этого 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
      }
};

Ответ 1

Если вы можете получить 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.

Ответ 2

Если вы знаете идентификатор дочернего элемента, вы можете сделать следующее:

ViewGroup row = (ViewGroup) v.getParent();
TextView textView = (TextView) row.findViewById(R.id.childID);