android hxgmvp 使用,Android开发从零开始

**

  • 封装好的MVP框架

  • 主要涉及类在:interfaceview包,model包,presenter包中

*/

@HxgContentView(R.layout.activity_main)

public class MainActivity extends HxgMvpActivity<NetWorkView, NetWorkPresenter> implements NetWorkView {

private FragmentManager fragmentManager;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

HxgViewUtils.getView().inject(this);

fragmentManager = getSupportFragmentManager();

fragmentManager.beginTransaction().replace(R.id.fl_main, new MainFragment())

.commitAllowingStateLoss();

}

@Override

public NetWorkPresenter createPresenter() {

return new NetWorkPresenter();

}

@Override

public NetWorkView createView() {

return this;

}

@HxgOnClick(R.id.btn_network)

@HxgCheckNet(HxgContast.DEFAULT_TYPE)

private void btnNetworkClick(Button btnNetwork) {

getPresenter().getNetWork(this);

}

/**

  • 返回的数据

  • @param studyBean

*/

@Override

public void onNetWorkResult(StudyBean studyBean) {

Toast.makeText(this, studyBean.toString(), Toast.LENGTH_LONG).show();

}

/**

  • 跳转Dagger页面

  • @param dagger

*/

@HxgOnClick(R.id.dagger)

private void daggerClick(Button dagger) {

startActivity(new Intent(this, DaggerActivity.class));

}

}

Fragment处理数据

例如:(记得实现数据回调接口NetWorkView)

@HxgContentView(R.layout.fragment_main)

public class MainFragment extends HxgMvpFragment<NetWorkView, NetWorkPresenter> implements NetWorkView {

@Nullable

@Override

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

View mView = HxgViewUtils.getView().inject(this, inflater, container);

return mView;

}

@Override

public NetWorkPresenter createPresenter() {

return new NetWorkPresenter();

}

@Override

public NetWorkView createView() {

return this;

}

@HxgOnClick(R.id.btn_network)

@HxgCheckNet(HxgContast.DEFAULT_TYPE)

private void btnNetworkClick(Button btnNetwork) {

getPresenter().getNetWork(getContext());

}

@Override

public void onNetWorkResult(StudyBean studyBean) {

Toast.makeText(getContext(), studyBean.toString(), Toast.LENGTH_LONG).show();

}

}

结合dagger2使用

dagger的作用主要是自动实例化Presenter

Activity中使用
实例化Presenter对象

例如:

/**

  • Created by Administrator on 2018/7/25 0025.

  • 使用Dagger创建对象

*/

@Module

public class NetWorkModule {

private DaggerActivity mActivity;

public NetWorkModule(DaggerActivity mActivity) {

this.mActivity = mActivity;

}

//显然我们并不是很多地方都需要某对象,我们在需要用该对象的界面的Module中提供注入即可

@Singleton

@Provides

NetWorkPresenter provideNetWork() {

return new NetWorkPresenter();

}

}

Dagger绑定

/**

  • Created by Administrator on 2018/7/25 0025.

  • Dagger绑定

*/

@Singlet

《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享

on

@Component(modules = NetWorkModule.class)

public interface MainComponent {

void inject(DaggerActivity activity);

}

dagger注入(以activity为例)

@Inject

NetWorkPresenter presenter;

记得注入要在onCreate方法的 super.onCreate(savedInstanceState);之前

DaggerMainComponent.builder()

.netWorkModule(new NetWorkModule(this))

.build()

.inject(this);

createPresenter 返回注入的对象

@Override

public NetWorkPresenter createPresenter() {

return presenter;

}

整个Activity的内容如下

/**

  • 带有Dagger的Activity

  • Dagger主要涉及类在:component包,module包

*/

@HxgContentView(R.layout.activity_dagger)

public class DaggerActivity extends HxgMvpActivity<NetWorkView, NetWorkPresenter>

implements NetWorkView {

@Inject

NetWorkPresenter presenter;

private FragmentManager fragmentManager;

@Override

protected void onCreate(Bundle savedInstanceState) {

DaggerMainComponent.builder()

.netWorkModule(new NetWorkModule(this))

.build()

.inject(this);

super.onCreate(savedInstanceState);

HxgViewUtils.getView().inject(this);

fragmentManager = getSupportFragmentManager();

fragmentManager.beginTransaction().replace(R.id.fl_main, new MainFragment())

.commitAllowingStateLoss();

}

@Override

public NetWorkPresenter createPresenter() {

return presenter;

}

@Override

public NetWorkView createView() {

return this;

}

@HxgOnClick(R.id.butten)

@HxgCheckNet(HxgContast.DEFAULT_TYPE)

private void buttenClick(Button butten) {

getPresenter().getNetWork(this);

}

/**

  • 返回的数据

  • @param studyBean

*/

@Override

public void onNetWorkResult(StudyBean studyBean) {

Toast.makeText(this, studyBean.toString(), Toast.LENGTH_LONG).show();

}

}

结合MVP自定义View

自定义MVP控件(以Button网络请求为例)

public class NetWorkButton extends HxgBaseButton<NetWorkView, NetWorkPresenter>

implements NetWorkView, View.OnClickListener {

public NetWorkButton(Context context) {

super(context);

}

public NetWorkButton(Context context, AttributeSet attrs) {

super(context, attrs);

}

public NetWorkButton(Context context, AttributeSet attrs, int defStyleAttr) {

super(context, attrs, defStyleAttr);

}

public NetWorkButton(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {

super(context, attrs, defStyleAttr, defStyleRes);

}

@Override

protected void onFinishInflate() {

super.onFinishInflate();

setOnClickListener(this);

}

@Override

public NetWorkPresenter createPresenter() {

return new NetWorkPresenter();

}

@Override

public NetWorkView createView() {

return this;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值