Android Mvpの簡単な例

5441 ワード

Android mvpの簡単な例
ブロガーは最近mvpを勉強して、簡単なブログをして、手作業能力を鍛えています.mvpの概念は紹介しません.プロジェクト階層モデル、presenter、view:次の3つの階層を簡単に説明します.
  • modelレイヤクラス.
  • presenterレイヤ論理処理.
  • viewレイヤインタフェースビュー.

  • まずactivityを作成します.
    public class MvpActivity extends BaseAppCompatActivity implements IUserView {
    
        private EditText et_myname;
        private EditText et_words;
    
        private Button btn_listen;
    
        private TextView tv_str;
    
        private UserPresenterCompl compl;
    
        private String talkString = "";
        private UserModel userModel;
    
        @Override
        protected int getLayoutId() {
            return R.layout.test_mvp;
        }
    
        @Override
        public void initElem() {
            compl = new UserPresenterCompl(this);
    
            userModel = new UserModel("", 0, true, true);
    
            et_myname = (EditText) findViewById(R.id.et_myname);
            et_words = (EditText) findViewById(R.id.et_words);
    
            tv_str = (TextView) findViewById(R.id.tv_str);
    
            btn_listen = (Button) findViewById(R.id.btn_listen);
    
            btn_listen.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (!et_myname.getText().toString().isEmpty())
                        userModel.setName(et_myname.getText().toString());
                    talkString = et_words.getText().toString().trim();
    
                    //         
                    compl.userListen(talkString, userModel);
                }
            });
        }
    
        @Override
        public void onListenResult(String text) {
            tv_str.setText(text);
        }
    }

    ActivityはIUserViewというインタフェースを実現しました.
     public interface IUserView {
        public void onListenResult(String text);  //    
    }
    

    ビジネスロジックのインタフェース
    public interface IUserPresenter {
        public void userListen(String text, UserModel who); //        
    }

    ビジネスロジックの実装
    public class UserPresenterCompl implements IUserPresenter {
    
        private IUserView mainView;
        private UserModel obj;
    
        public UserPresenterCompl(IUserView mainView) {
            this.mainView = mainView;
            obj = new UserModel("  ", 15, true, true);
        }
    
    
        @Override
        public void userListen(String text, UserModel who) {
            if (obj.isCanListen() && obj.isCanTalk())
     //        
                mainView.onListenResult("  :" + obj.getName() + ", " + "   :" + who.getName() + " "  text);
        }
    }

    ここまで、activityでインタフェースビューを作成し、buttonがクリックしたときに業務をpresenterに配布して論理を実現し、presentが処理した後に結果をactivityに返し、activityは戻ることによってインタフェースの変換を処理する小さな流れが明らかになった.コードロジックははっきりしていて、1つのactivityで大量の操作をすることもできなくて、ページとロジックを分けました.