Как вы знаете, мы можем переопределить несколько методов для каждого типа созданного нами представления. Я не делаю никакого кода XML-макета, потому что многие вещи меняются во время выполнения, и есть вещи, которые создаются динамически, поэтому программное решение - лучший путь для меня.
Итак, чтобы понять суть моей проблемы, скажем, у меня есть 50 кнопок в моем приложении для Android. Эти кнопки могут потенциально находиться в одном действии, но, скорее всего, могут отображаться на нескольких экранах (Activites).
Я создал класс кнопок с именем CustomButton, который переопределяет метод onClick (View view). Что если некоторые кнопки должны выполнять какое-то действие (скажем, они являются частью линейного макета), а некоторые являются частью чего-то вроде относительного макета, и в каждом относительном макете вы хотите получить информацию об относительном макете, который эта кнопка находится (возможно, вам, что бы получить информацию обо всех текстовых представлениях в той же относительной компоновке и т. д. и т. д.).
Одним из решений, конечно, является то, что вы можете получить идентификатор каждой кнопки и выполнить переключение (случай) или что-то еще, и в зависимости от того, какой идентификатор возвращаемой кнопки вы можете сделать. Проблема в том, что у меня 50 кнопок. Что если бы у меня было 200? Должен ли я действительно сделать 200 проверок в моем выражении switch, чтобы выяснить, какое действие мне нужно предпринять?
Итак, я пытаюсь выяснить, какая информация мне доступна, о которой я не знаю, которую я мог бы использовать при переопределении onClick.
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(!getClickInfo()){
((CustomButton)v).setText("I clicked the button");
setClickInfo(true);
}
else{
isClicked = false;
((CustomButton)v).setText("This is the button that i want to click");
}
}
так вот пример. Я прошел в представлении, представляющем кнопку, на которую нажали, и я могу изменить текст кнопки, нажимая на нее снова и снова. Но что, если Кнопка была частью относительного макета? Могу ли я получить какую-либо другую информацию о других видах, которые также являются частью того же относительного макета? Что делать, если некоторые кнопки, которые я хотел изменить цвет фона каждый раз, когда я нажимал его вместо изменения текста? Если у меня есть количество кнопок X, я стараюсь не создавать количество идентификаторов X - как я уже говорил, их может быть сотни.
Хотелось бы знать, есть ли у кого-нибудь идеи о том, что будет лучшим маршрутом здесь, чем наличие потенциально неограниченной проверки случаев внутри оператора switch. Если бы я мог выяснить, из какого вида пришла кнопка (в моем случае кнопка была частью внешнего вида), то я мог бы сделать переключение на своих представлениях, а не только на моих кнопках - и сделать свое заявление о переключении намного менее громоздким и более простым поддерживать. Благодарю.