android hxgmvp 使用

**

  • 封装好的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绑定

*/

@Singleton

@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();
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

最后

我见过很多技术leader在面试的时候,遇到处于迷茫期的大龄程序员,比面试官年龄都大。这些人有一些共同特征:可能工作了7、8年,还是每天重复给业务部门写代码,工作内容的重复性比较高,没有什么技术含量的工作。问到这些人的职业规划时,他们也没有太多想法。

其实30岁到40岁是一个人职业发展的黄金阶段,一定要在业务范围内的扩张,技术广度和深度提升上有自己的计划,才有助于在职业发展上有持续的发展路径,而不至于停滞不前。

不断奔跑,你就知道学习的意义所在!

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!**

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

[外链图片转存中…(img-llKOkQrS-1713716339249)]

最后

我见过很多技术leader在面试的时候,遇到处于迷茫期的大龄程序员,比面试官年龄都大。这些人有一些共同特征:可能工作了7、8年,还是每天重复给业务部门写代码,工作内容的重复性比较高,没有什么技术含量的工作。问到这些人的职业规划时,他们也没有太多想法。

其实30岁到40岁是一个人职业发展的黄金阶段,一定要在业务范围内的扩张,技术广度和深度提升上有自己的计划,才有助于在职业发展上有持续的发展路径,而不至于停滞不前。

不断奔跑,你就知道学习的意义所在!

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值