У меня есть GridView, чьи элементы ToggleButtons, и я определил прослушиватель событий для кликов по элементам, но ничего не происходит, когда я нажимаю на них. Здесь слушатель:
paintActionsGrid.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
public void onItemClick(AdapterView<?> parent,View view,int position,
long id)
{
((ToggleButton)view).setChecked(true);
paintBoardView.setPaintAction(paintActions[position]);
}
});
Я поставил точку останова в слушателе, но он не дошел, а это значит, что слушателя вообще не называют! Может кто-нибудь, пожалуйста, скажите мне, что случилось? Связано ли это с тем, что элементы ToggleButtons? При необходимости я могу прикрепить код адаптера. Благодарю.
Событие клика потребляется ToggleButton, поэтому не передается в GridView. Подобно этому сообщению.
Да, проблема заключается в том, что ToggleButton по умолчанию имеет включенную функцию clickable, и, следовательно, ваш ItemClickListener не будет работать. Идея состоит в том, чтобы установить фокус ToggleButton на значение false по умолчанию.
Предполагая, что у вас есть собственный xml для ToggleButton, добавьте в него эту строку,
android:focusable="false"
Поскольку у вас есть сфокусированный элемент, эта проблема возникает. Попробуйте эту простую идею.