[英]Passing different list of methods to be called on listener event
我目前正在使用第3方库来异步加载图像,数据。 我将一个侦听器传递给该方法,当加载\\下载完成时,一个事件传递给了我的侦听器,我开始使用它。 例如:
getMainDownloader.getImagesLoader().loadImages(new IListener() {
@Override
public void loadingCompleted() {
//calling methods that uses this asset
method1();
method2();
}
}, ImagesList.get(0), ImagesList.get(3),ImagesList.get(5));
监听器接口:
public static interface IListener {
public void loadingCompleted();
}
在我的代码中,我有很多地方应该在上面下载这些资产,并在loadingCompleted()
上调用不同的方法method5(),method12()
...,所以我复制了上面的代码,每次更改方法什么会创建重复的代码。
是否有一种技术可以设置一种用于加载这些资产的方法,以及一些如何传递要在loadingCompleted()
调用的方法(method1()... loadingCompleted()
?
除了使用匿名类,还可以使用“真实”或嵌套类:
private static class MultiImagesListener implements IListener() {
private final String imageId;
public MultiImagesListener (String imageId) {
this.imageId = imageId;
}
@Override
public void loadingCompleted() {
// use this.imageId to decide which methods to call...
if (IMG_ID1.equals(imageId)) {
method1();
method13();
method27();
// ...
}
}
每次将侦听器实例传递给loadImages
-method时,都应将另一个参数传递给构造函数,以区分侦听器实例:
getMainDownloader.getImagesLoader().loadImages(new MultiImagesListener(IMG_ID1);
getMainDownloader.getImagesLoader().loadImages(new MultiImagesListener(IMG_ID2);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.