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

时间:2016-10-26 18:16:30

标签: android loops 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

            }
        });
    }
}

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

1 个答案:

答案 0 :(得分:0)

如果您可以控制这部分代码,则应改变您的体系结构,并将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
    }
}