Hmm. Not looking at the code, but off the top of my head, I'd guess that
I have a click event handler on something like android.view.Checkable,
android.widget.Checkable, etc. I'd guess that this presenter handles
speaking state changes for checkable items. It may be that this code has
to migrate to a more generic view, and the isCheckable check should be
moved to the source since the events no longer accurately reflect that.
As I stated on Twitter, whether something is checkable or not used to be
encapsulated in the event itself. Now it seems to be on the source, but
despite events still having an isCheckable method, this often doesn't
match what source.isCheckable reports. So which is right?
event.isCheckable or event.getSource.isCheckable? Nobody knows. :)
The big pain point with Android accessibility is that it evolved like
this over time, and there's no documentation. The Firefox folks did
their implementation by reading TalkBack's source, something I really
don't have the time or desire to do. So it's very much a trial and error
process. Make a little change, find that it works where you wanted but
discover hours later that it broke something unrelated, add a check to
fix the unrelated break, find that broke something else. Repeat until
you've added enough special cases and defensive programming that gets
things behaving like you want.
If they aren't emitting a click event, I'm not sure how to handle state
changes. Maybe ask Marco for pointers?