繁体   English   中英

循环内的回调:如何在回调中使用loop的参数?

[英]Callbacks inside a loop : how can i use parameter of loop in callback?

在循环中,我需要多次调用带有回调的方法。 如何在onObjectChecked()中使用参数parsedObject?

@Override
public void onObjectsMustBeParsed(String parsableObjects) {
    String[] parsedObjects = parsableObjects.split(",");

    for (String parsedObject : parsedObjects){

        checkObject(parsedObject, new CheckObjectCallback() {
            @Override
            public void onObjectChecked() {
                //Object check

                // here call method with parameters : parsedObject
                // Example : transformObject(parsedObject);
            }

            @Override
            public void onError() {
                // Object not checked

            }
        });
    }
}

注意:当我没有循环时,我使用最终变量。 我不知道这是一个好习惯! 请告诉我是否!

如果您可以控制这部分代码,则应该更改体系结构,并将parsedObject作为参数提供给parsedObject onObjectChecked()

但是要对当前代码进行一些更改,您可以实现一个简单的内部类(不是匿名的)来保存parsedObject

@Override
public void onObjectsMustBeParsed(String parsableObjects) {
    String[] parsedObjects = parsableObjects.split(",");

    MyCheckObjectCallback callback = new MyCheckObjectCallback();

    for (String parsedObject : parsedObjects) {
        callback.parsedObject = parsedObject;
        checkObject(parsedObject, callback);
    }
}

private class MyCheckObjectCallback implements CheckObjectCallback {

    String parsedObject = null;

    @Override
    public void onObjectChecked() {
        // Object check
        // here call method with parameters : parsedObject
        // Example : transformObject(parsedObject);
    }

    @Override
    public void onError() {
        // Object not checked
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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