retrofit学习二——MVP及Butterknife

MVP框架学习

Butterknife学习

MVP学习:

MVP基本框架

在这里插入图片描述

进行改进

MVP框架文件结构
上面的是图片是上面MVP学习的框架。model负责进行底层数据库的链接以及相关底层逻辑功能的完善,view负责进行Android页面的展示,包括的内容除了activity之外还有fragment。而presenter翻译过来是主持人的意思,在MVP中主要负责的内容是进行Model和View的连接,进行相应的解耦操作。
在对MVP框架进行优化的过程中,会将基本的功能进行抽取,存放在base中,进行部分逻辑的简化,方便之后进行维护。

再次进行优化

MVP架构中有个Contract的概念,Contract有统一管理接口的作用,目的是为了统一管理一个页面的View和Presenter接口,用Contract可以减少部分文件的创建,比如P层和V层的接口文件.
上方的MVP文章尽可能的进行了细致的讲解,尤其是对MVP框架如何进行优化以及如何进行优化。十分具有参考意义。

ButterKnife框架

对一个成员变量使用@BindView注解,并传入一个View ID, ButterKnife 就能够帮你找到对应的View,并自动的进行转换(将View转换为特定的子类)

class ExampleActivity extends Activity {
    @BindView(R.id.title)  TextView title;
    @BindView(R.id.subtitle) TextView subtitle;
    @BindView(R.id.footer) TextView footer;

    @Override public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.simple_activity);
        ***ButterKnife***.bind(this);
        // TODO Use fields...
    }
}

资源绑定

绑定资源到类成员上可以使用@BindBool、@BindColor、@BindDimen、@BindDrawable、@BindInt、@BindString。使用时对应的注解需要传入对应的id资源,例如@BindString你需要传入R.string.id_string的字符串的资源id。

class ExampleActivity extends Activity {
  @BindString(R.string.title) String title;
  @BindDrawable(R.drawable.graphic) Drawable graphic;
  @BindColor(R.color.red) int red; // int or ColorStateList field
  @BindDimen(R.dimen.spacer) Float spacer; // int (for pixel size) or float (for exact value) field
  // ...
}

View列表

可以一次性的将多个views绑定到一个list数组之中,ButterKnife.apply(nameViews,DISABLE);apply函数用于一次性在列表上的所有View执行一个动作,Action和Setter接口可以实现一些简单的动作。

static final ButterKnife.Action<View> DISABLE = new ButterKnife.Action<View>() {
    @Override public void apply(View view, int index) {
        view.setEnabled(false);
    }
};
static final ButterKnife.Setter<View, Boolean> ENABLED = new ButterKnife.Setter<View, Boolean>() {
    @Override public void set(View view, Boolean value, int index) {
        view.setEnabled(value);
    }
};

感觉BUtterKnife专注于组件的绑定,但凡涉及到组件绑定的内容都可以考虑使用他,功能包括基本的资源的绑定,button的绑定,View列表的绑定,进行监听器的绑定,直接将监听器绑定到特定的执行方法上。
同时由于Fragment和Activity的生命周期不同,导致存在需要销毁View的时候,可以返回一个unbinder实例的unbind()方法来进行绑定的重置。
如果需要绑定的View暂时并没有找到的情况可以变量上使用@Nullable注解来进行绑定,或者方法上使用@Option来注解,此时就不会报错。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值