I see... I don't plan on starting to explain all what has to be done to implement a GUI system thing. Cuz i don't know it all
With these 3 things. Still something, some class, has to call the clicklistener with onClick. Since only your view knows what the clicklistener is, theres a method in your view, that fires the clicklistener. The performClick() method does just that. I guess you expect the Android API to call performClick() when the user clicked on it. The problem is, android doesn't know its a "click", maybe its a drag, and besides clicks can come in other ways, like press the big-middle button, on a focussed view. Android can't call performClick, cuz it doesn't know if/when it's a click. So android sends the event (the motionevent) to the view, and let it handle it. All clickable widgets will call their performclick, all other views, will ignore it. If you know that event is a click, you have to call performClick.
Might be difference with swing (if it works different as you say) that in android we get more "control" but at the price that we to have to implement more.
That a view gets touched (it is a touchscreen) is not the same as being clicked. most likely it is, but the api can not and should not know that. (Designing apis isn't easy matter...)
if you set, onClickListener(this); You better override performClick...