開發一個好專案:八、建立view
前一篇文章: 框架地址 希望大家能多多star一下
接著上一篇文章繼續
建立一個View(view有兩種,目前可知道的是Fragment和Activity)繼承
目前View 有兩個基礎類,當然我也在這篇文章裡提過了 連結
基礎類裡有幾個方法是公共用的,我就提出去了。
建立Fragment的View類 繼承 TBaseFragment 實現 HomeContract.View
工廠方法
public static HomeFragment newInstance() {
HomeFragment fragment = new HomeFragment();
Bundle args = new Bundle();
fragment.setArguments(args);
return fragment;
}
show()和hidden() 是 fragment 隱藏顯示時候呼叫的方法
onAttach是初始化判斷當前的activity容器是否實現了OnFragmentInteractionListener方法
setPresenter將mPresenter賦值
程式碼如下
public class HomeFragment extends TBaseFragment implements HomeContract.View{
public HomeFragment() {
}
HomeContract.Presenter mPresenter;
public static HomeFragment newInstance() {
HomeFragment fragment = new HomeFragment();
Bundle args = new Bundle();
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
protected int layoutViewId() {
return R.layout.fragment_home;
}
@Override
protected void initView(Bundle savedInstanceState) {
}
MatchAdapter matchAdapter;
RecyclerView home_recycle;
@Override
protected void initView(View view, Bundle savedInstanceState) {
ActivityUtils.getFragment(getChildFragmentManager(),R.id.home_user, UserTitleFragment.newInstance());
home_recycle = findView(R.id.home_recycle);
home_recycle.setLayoutManager(new LinearLayoutManager(getActivity()));
matchAdapter = new MatchAdapter(getActivity(),new ArrayList());
home_recycle.setAdapter(matchAdapter);
mPresenter.getMatch();
}
@Override
protected void show() {
SFont sFont = setRightButtonFont(R.string.plus);
setTitle(getResources().getString(R.string.takkyuu_home));
sFont.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AddActivity.start(getActivity());
}
});
}
@Override
protected void hidden() {
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
if (context instanceof OnFragmentInteractionListener) {
mListener = (OnFragmentInteractionListener) context;
} else {
throw new RuntimeException(context.toString()
+ " must implement OnFragmentInteractionListener");
}
}
@Override
public void showMatch(List matchModels) {
matchAdapter.addCommentModel(matchModels);
}
@Override
public void setPresenter(HomeContract.Presenter presenter) {
super.setPresenter(presenter);
mPresenter = presenter;
}
}
如何使用這個fragment呢?
在你的actvivity裡用ActivityUtils 這個是dileber框架裡的載入fragment方法
如下程式碼
HomeFragment homeFragment = ActivityUtils.getFragment(getSupportFragmentManager(),R.id.homeFrame,HomeFragment.newInstance());
new HomePresenter(homeFragment,SysRepository.getInstance());
activity的View,基礎類也是在 連結
繼承 TBaseActivity 實現
start() 跳轉當前activity的方法
UToolBar 的使用在之前的文章介紹過 連結
presenter = new LoginPresenter(this, UserRepository.getInstance());
則是使用LoginPresenter的方法
public class LoginActivity extends TBaseActivity implements LoginContract.View,View.OnClickListener{
public static void start(Context context,Intent intent){
if(intent == null){
intent = new Intent();
}
intent.setClass(context,LoginActivity.class);
context.startActivity(intent);
}
EditText login_name,login_pass;
LoginContract.Presenter mPresenter;
@Override
protected void startView(Bundle savedInstanceState) {
}
@Override
protected int layoutViewId() {
return R.layout.activity_login;
}
@Override
protected void initView(Bundle savedInstanceState) {
presenter = new LoginPresenter(this, UserRepository.getInstance());
UToolBar uToolBar = new UToolBar();
uToolBar.setTitleId(R.string.takkyuu_login);
uToolBar.setNeedNavigate(false);
setToolBar(R.id.toolbar,uToolBar);
login_name = getView(R.id.login_name);
login_pass = getView(R.id.login_pass);
UUi.setOnClickListener(this,getView(R.id.login_login),getView(R.id.login_register));
}
@Override
public void toHome() {
HomeActivity.start(this);
finish();
}
@Override
public UserModel getUser(){
UserModel userModel = new UserModel();
userModel.setUsername(login_name.getText().toString().trim());
userModel.setUserpass(login_pass.getText().toString().trim());
return userModel;
}
@Override
public void setPresenter(LoginContract.Presenter presenter) {
mPresenter = presenter;
}
@Override
protected void onResume() {
super.onResume();
mPresenter.getUser();
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.login_login:
mPresenter.checkUser();
break;
case R.id.login_register:
RegisterActivity.start(LoginActivity.this);
break;
}
}
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1343/viewspace-2798251/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【Lolttery】專案開發日誌 (三)維護好一個專案好難
- 開發一個好專案:二、actvity簡便跳轉,建立選單按鈕,正確使用fr
- 企業開源指南:建立一個開源專案
- Django建立第一個專案Django
- 建立第一個django專案Django
- 從webpack開始建立一個新的react專案WebReact
- 如何寫好一個自定義ViewView
- Cordova+vue 混合app開發(一)建立Cordova專案VueAPP
- Python 建立一個Django專案PythonDjango
- Flutter 建立第一個專案 for macFlutterMac
- 寫好一個專案不容易
- 一個好的專案經理(轉)
- 我如何用Django開發一個專案Django
- 請大家推薦一個好的開源專案釋出站。
- django 開發網站-建立 django 專案Django網站
- 用 vitePress 快速建立一個文件專案Vite
- 如何快速建立一個爬蟲專案爬蟲
- 業餘專案,尋 Laravel 大牛,2年以上經驗,開發個專案,股份好說。Laravel
- 開始一個專案
- 一個外行如何快速融入node專案開發
- 使用Express MongoDB開發一個完整MVC專案ExpressMongoDBMVC
- Python的開發必備:如何建立一個優秀的專案工程環境Python
- SpringBoot專案建立與第一個SSM專案示例Spring BootSSM
- 如何建立一個Maven專案(eclipse版本)MavenEclipse
- OpenGL入門(1)——建立一個OpenGL專案
- 如何建立一個完美的 Python 專案Python
- 建立一個ASP.NET MVC 5專案ASP.NETMVC
- 在專案中建立一個使用者
- 從零開始使用webpack 4, Babel 7建立一個React專案WebBabelReact
- SSH專案開發裡用maven的好處Maven
- Angular入門,開發環境搭建,使用Angular CLI建立你的第一個Angular專案Angular開發環境
- 精讀《維護好一個複雜專案》
- 如何發起並運營一個開源專案
- artisan命令建立view檔案View
- 小程式雲開發專案的建立與配置
- Android開源專案第一篇——個性化控制元件(View)篇Android控制元件View
- 從零建立一個 Dart 服務端專案Dart服務端
- 建立一個react-native專案(2/4)React