繁体   English   中英

传递要在侦听器事件上调用的方法的不同列表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM