public class UserInfoActivity extends Activity implements IUserInfoShow, View.OnClickListener { private final String TAG = UserInfoActivity.class.getCanonicalName(); private UserInfoPresenter mUserInfoPresenter; @Override public void beforeLoading() { Log.e(TAG,"開始加載以前"); } @Override public void afterLoading() { Log.i(TAG,"加載數據以後"); } @Override public void getUserInfoSucc(UserInfo userInfo) { Log.i(TAG,"獲取UserInfo 成功"+userInfo.toString()); } @Override public void getUserInfoFail(String msg) { Log.e(TAG,"獲取UserInfo Fail"+msg); } @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_userinfo); initEvent(); initData(); } private void initEvent() { findViewById(R.id.btn).setOnClickListener(this); } private void initData() { mUserInfoPresenter = new UserInfoPresenter(new GetUserInfoImpl(),this); } @Override public void onClick(View v) { if (mUserInfoPresenter != null){ mUserInfoPresenter.getUserInfo(888); } } }
Presenter層:java
public interface IUserInfo { void getUserInfo(int id,OnUserInfoListener userInfoListener); }
public class GetUserInfoImpl implements IUserInfo { @Override public void getUserInfo(final int id, final OnUserInfoListener userInfoListener) { new Thread(){ @Override public void run() { super.run(); try { Thread.sleep(2*1000); if (id == 888){ UserInfo userInfo = new UserInfo(); userInfo.setAccount("JIM"); userInfo.setId(id); userInfo.setPwd("lee"); userInfoListener.onGetSucc(userInfo); }else{ String msg = "查無此人"; userInfoListener.onGetFail(msg); } } catch (InterruptedException e) { e.printStackTrace(); } } }.start(); } }
public interface OnUserInfoListener { void onGetSucc(UserInfo userInfo); void onGetFail(String msg); }
UserInfoPresenter:
public class UserInfoPresenter { private IUserInfo getuserinfo; private IUserInfoShow userInfoShow; public UserInfoPresenter(IUserInfo getuserinfo, IUserInfoShow userInfoShow) { this.getuserinfo = getuserinfo; this.userInfoShow = userInfoShow; } public void getUserInfo(int id){ userInfoShow.beforeLoading(); if (getuserinfo!=null){ getuserinfo.getUserInfo(id, new OnUserInfoListener() { @Override public void onGetSucc(UserInfo userInfo) { userInfoShow.getUserInfoSucc(userInfo); userInfoShow.afterLoading(); } @Override public void onGetFail(String msg) { userInfoShow.getUserInfoFail(msg); userInfoShow.afterLoading(); } }); } } }
public interface IUserInfoShow { void beforeLoading(); void afterLoading(); void getUserInfoSucc(UserInfo userInfo); void getUserInfoFail(String msg); }
ublic class UserInfo { private int Id; private String Account; private String pwd; public int getId() { return Id; } public void setId(int id) { Id = id; } public String getAccount() { return Account; } public void setAccount(String account) { Account = account; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } @Override public String toString() { return "UserInfo{" + "Id=" + Id + ", Account='" + Account + '\'' + ", pwd='" + pwd + '\'' + '}'; } }