Простой вопрос, у меня есть этот код

<HorizontalScrollView
    android:id="@+id/horizontalScrollView1"
    ...

    <LinearLayout
        android:id="@+id/insideLinearLayout1"
        ...
        <TextField>
          android:text='beforeClick'
          ...

         <Button
            android:id="@+id/button1"
            android:onClick="updateExpression"
            ...


   </Linear Layout 

   <LinearLayout
        android:id="@+id/insideLinearLayout2"
        ...

          <TextField>
          android:text='beforeClick'
          ...
         <Button
            android:id="@+id/button1"
            android:onClick="updateExpression"
            ...


   </Linear Layout 

    </LinearLayout>
</HorizontalScrollView>

Идея состоит в том, чтобы изменить текстовое свойство textField при нажатии кнопки в том же макете!

Хорошо для 2 - это просто, просто нужна ссылка на каждую кнопку и каждое текстовое поле, а для изменения используйте метод get и set! Но я хочу динамически добавлять больше макетов, и получить ссылку на каждый из них было бы сложной задачей.

Итак, два вопроса:

  1. How can i grab the id of the Linear layout, that have the clicked button?

    Я хочу обработать id 'insideLinearLayout (1 или 2 в зависимости от нажатой кнопки)' в 'updateExpression'!

  2. How can i add more layouts with the same widgets as the ones created manually?

Заранее спасибо. Лучшее из кодировок!

0
cyberjp 16 Мар 2014 в 06:23

1 ответ

Лучший ответ

1) Вашей функции onClick передается вид, по которому щелкнули. В каждом представлении есть функция getParent (). Вы можете использовать его для получения LinearLayout, а затем получить идентификатор.

2) Создайте их с новым ключевым словом, затем добавьте их в родительский макет. Для чего-то вроде этого я, вероятно, сделал бы настраиваемое представление compund, содержащее все, что вы хотите создать сразу, чтобы вы могли рассматривать весь набор виджетов как один.

1
Gabe Sechan 16 Мар 2014 в 06:28
Public void updateExpression (View v) {View parentLayout = (View) v.getParent (); int id = parentLayout.getId (); Log.v ("ИМЯ", String.valueOf (id));
 – 
cyberjp
16 Мар 2014 в 07:08
Извините за предыдущий комментарий. Как мне сделать второй шаг? Могу ли я получить ссылку на уже созданный, создать экземпляр и изменить некоторые параметры?
 – 
cyberjp
16 Мар 2014 в 07:18
Вы бы сделали TextView newView = new TextView (activity), чтобы создать его. Затем измените любые значения, которые хотите. Аналогично для других типов представлений.
 – 
Gabe Sechan
16 Мар 2014 в 07:22