Получить ссылку на просмотры в моей активности Android - PullRequest
4 голосов
/ 28 февраля 2011

У меня есть LinearLayout, состоящий из нескольких Button с, и я добавляю это к своей деятельности в методе onCreate(..) с setContentView(R.layout.myscreen).Пока никаких сюрпризов.

Как получить ссылку на итератор для этих кнопок?Я хотел бы добавить к ним слушателей, но я бы не стал напрямую ссылаться на кнопки, используя их android:id.

Подобные вопросы задавались здесь и здесь но они не совсем отвечают на мой вопрос.

Ответы [ 3 ]

6 голосов
/ 28 февраля 2011

Попробуйте что-то вроде этого, предоставьте идентификатор root_layout в xml для LinearLayout

LinearLayout mLayout = (LinearLayout) findViewById(R.id.root_layout);
    for(int i = 0; i < mLayout.getChildCount(); i++)
    {
        Button mButton = (Button) mLayout.getChildAt(i);
        mButton.setOnClickListener(this);
    }

Где mLayout является объектом вашей линейной компоновки, а ваша деятельность должна реализовывать OnClickListener, а здесь идет общий слушатель

@Override
public void onClick(View v)
{
    Button mButton = (Button)v;
    String buttonText = mButton.getText().toString();

}

ПРИМЕЧАНИЕ: Чтобы это работало правильно, ваша линейная схема должна содержать только кнопку без других представлений

4 голосов
/ 28 февраля 2011

Вы должны взглянуть на мой ответ здесь .

Короче.Я бы назначил кнопки слушателю, установив атрибут onClick в макете XML для каждого Button.

Внутри вашего Activity вам понадобится публичный метод, подобный приведенному ниже, который в основномэто то, что вы хотите сделать в своем слушателе.

public void myFancyMethod(View v) {
    // do something interesting here
}
0 голосов
/ 16 января 2013

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

<ElementClass> <referencevariable> = (<ElementClass>) findViewById(R.id.<id_of_the_element>);

Например:

TextView textView= (TextView) findViewById(R.id.t1); //I used t1 to refer my textview in the Layout.

Это может сработать. Затем вы можете использовать эти представления со встроенными методами для выполнения столько работы, сколько вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...