Advertisement
Guest User

Untitled

a guest
Apr 21st, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.40 KB | None | 0 0
  1. public interface MvpView {
  2. }
  3.  
  4. public abstract class BaseActivity<T extends MvpView, K extends Presenter<T>> extends AppCompatActivity {
  5.  
  6.     private K presenter;
  7.  
  8.     protected abstract @NonNull T getView();
  9.     protected abstract void inject();
  10.  
  11.     @CallSuper
  12.     @Override
  13.     protected void onCreate(@Nullable Bundle savedInstanceState) {
  14.         super.onCreate(savedInstanceState);
  15.  
  16.         inject();
  17.  
  18.         presenter.attach(getView());
  19.     }
  20.  
  21.     @CallSuper
  22.     @Override
  23.     public void onDestroy () {
  24.  
  25.         presenter.detach(getView());
  26.  
  27.         super.onDestroy();
  28.     }
  29.  
  30.     //presenter
  31.  
  32.     public K getPresenter () {
  33.         return presenter;
  34.     }
  35.  
  36.     @Inject
  37.     public void setPresenter (K presenter) {
  38.         this.presenter = presenter;
  39.     }
  40. }
  41.  
  42. public abstract class Presenter<T extends MvpView> {
  43.  
  44.     protected T view;
  45.  
  46.     public void attach (T view) {
  47.         this.view = view;
  48.     }
  49.  
  50.     public void detach (T view) {
  51.         if (this.view == view) {
  52.             this.view = null;
  53.         }
  54.     }
  55. }
  56.  
  57. public class MainActivity extends BaseActivity<MainPresenter.View, MainPresenter> implements MainPresenter.View, View.OnClickListener {
  58.  
  59.     @NonNull
  60.     @Override
  61.     protected MainPresenter.View getView() {
  62.         return this;
  63.     }
  64.  
  65.     @Override
  66.     protected void inject() {
  67.         DaggerMainComponent
  68.                 .builder()
  69.                 .build()
  70.                 .inject(this);
  71.     }
  72.  
  73.     @Override
  74.     protected void onCreate(Bundle savedInstanceState) {
  75.         super.onCreate(savedInstanceState);
  76.  
  77.         setContentView(R.layout.activity_main);
  78.  
  79.         findViewById(R.id.do_smth_btn).setOnClickListener(this);
  80.     }
  81.  
  82.     //View.OnClickListener
  83.  
  84.     @Override
  85.     public void onClick(View v) {
  86.  
  87.         switch (v.getId()) {
  88.  
  89.             case R.id.do_smth_btn: {
  90.  
  91.                 getPresenter().doSmth();
  92.  
  93.                 break;
  94.             }
  95.         }
  96.     }
  97.  
  98.     @Override
  99.     public void onSmthDone(String string) {
  100.  
  101.         Toast.makeText(this, "result - " + string, Toast.LENGTH_LONG).show();
  102.     }
  103. }
  104.  
  105. @Singleton
  106. public class MainPresenter extends Presenter<MainPresenter.View> {
  107.  
  108.     @Inject
  109.     public MainPresenter () {
  110.  
  111.     }
  112.  
  113.     public void doSmth() {
  114.         view.onSmthDone("done");
  115.     }
  116.  
  117.     public interface View extends MvpView {
  118.         void onSmthDone(String string);
  119.     }
  120. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement