如何在Presenter中传递2种不同用法的单个上下文参数?

时间:2019-08-05 08:19:27

标签: android kotlin mvp

所以我的应用程序具有此MVP实现

myActivity:

class ValidateOTPActivity : AppCompatActivity(), ValidateOTPListener {

  private lateinit var presenter: ValidateOTPPresenter
    override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    presenter = ValidateOTPPresenter(this, this)
    ...
    ...
  }
}

myPresenter:

class ValidateOTPPresenter constructor(val context: Context, val listener: ValidateOTPListener) {
...
...
...
}

myListener:

interface ValidateOTPListener {
    fun onValidationSuccess(response: JSONObject)
    fun onValidationFailed()
}

我想在演示者中同时使用Context和ValidateOTPListener,如何避免在this中传递两个presenter = ValidateOTPPresenter(this, this)?我只想通过一个this,可以吗?

2 个答案:

答案 0 :(得分:0)

您可以将 public class OnlineProductList extends AsyncTask<Void,Void,Void>{ @Override protected void onPostExecute(Void aVoid) { super.onPostExecute(aVoid); System.out.println("Program: " + productData.length / 3 + " Products found"); //create product objects Product[] product = new Product[productData.length / 3]; for (int i = 0; i < product.length; i++) { product[i] = new Product(productData[3 * i], productData[1 + 3 * i], Boolean.parseBoolean(productData[2 + 3 * i])); } //create buttons for available products MainActivity.productButton = new Button[product.length]; for (int i = 0; i < productData.length; i++) { MainActivity.productButton[i] = new Button(this); MainActivity.productButton[i].setWidth(MainActivity.orderHorizontalLayout.getWidth()); MainActivity.productButton[i].setHeight(MainActivity.orderHorizontalLayout.getHeight() / 10); MainActivity.productButton[i].setText(product[i].name); MainActivity.orderHorizontalLayout.addView(MainActivity.productButton[i]); } } } 转换为MainActivity.productButton[i] = new Button(this); 内部的界面

Context

答案 1 :(得分:0)

嗨,您可以执行以下操作:

   class ValidateOTPActivity : AppCompatActivity(), ValidateOTPListener {

      private lateinit var presenter: ValidateOTPPresenter
        override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        presenter = ValidateOTPPresenter(this)
        ...
        ...
      }
    }

然后在您的演示者中:

 class ValidateOTPPresenter constructor(val context: Context) {
  val otpListener:ValidateOTPListener
  init{
    otpListener= context as ValidateOTPListener
   }
...
...
...
}