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

时间:2016-01-22 05:36:47

标签: java

我目前正在使用第三方库以异步方式加载图像和数据。 我将一个监听器传递给该方法,当loading \ download完成后,一个事件被传递给我的监听器,我开始使用他。例如:

 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();

}

在我的代码中,我有很多地方可以在上面下载这些资源,并调用不同的方法 - method5(),method12() ...在loadingCompleted()上,所以我复制上面的代码,每次更改创建重复代码的方法。

是否有技术设置一种方法来加载这些资产?一些方法如何传递方法(method1()...)我希望在loadingCompleted()中调用?

1 个答案:

答案 0 :(得分:0)

您可以使用“真实”或嵌套类,而不是使用匿名类:

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 - 方法时,都应该将另一个参数传递给构造函数,以便区分侦听器实例:

getMainDownloader.getImagesLoader().loadImages(new MultiImagesListener(IMG_ID1);
getMainDownloader.getImagesLoader().loadImages(new MultiImagesListener(IMG_ID2);