将侦听器传递给使用此侦听器问题创建View的方法

时间:2016-11-08 09:44:03

标签: android listener mvp

这是我的情况: 我想将一个监听器传递给一个视图生成器来使用它。但问题是在我的监听器中我想使用该View来获取一些数据。一些如何扭曲...... 是一种预先定义View的方法,就像Listener应该附加到的接口一样?

        AdapterView.OnItemSelectedListener listener = new AdapterView.OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int pos, long l) {

               //but I can not do this and use spinner cause it is not defined
                String text = spinner.getSelectedStrings().toString();

            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {}
        };

generateSpinner(attributes, listener);

我正在研究android中的MVC项目,这个问题从那里出来,因为我应该将创建和逻辑分离为View和Presenter。所以我的演示者强制视图生成一个给定逻辑的微调器。

1 个答案:

答案 0 :(得分:0)

您自己已经回答了一半以上的问题。建立一个这样的界面:

public interface MyViewCallback
{  
    void run(View view); 
}

现在,您可以存储此interface的实例,并在需要时从run()的范围调用其View方法 - 例如,

MyViewCallback callback;

// ... on some action
callback.run(this);

您可以为此callback创建一个setter,并使用它来注册回调。