If you want your listener to be more accessible (API usable), then I would recommend method 2. I also stopped using private classes a few years ago and use public static
nested classes:
public class YourClass {
public static YourNestedClass {
//...
}
}
There are no real performance differences in the initialization of them aside from your own implementation. If you make, say, 30 different listener objects for something that could all be done by a common object (as in method 1/2), then there may be a slight difference. Otherwise, you can really just do what you prefer.