给大家整理一篇相关的编程文章,网友沃冰凡根据主题投稿了本篇教程内容,涉及到Android、Databinding关注功能、Android、Databinding、mvvp、Android Databinding关注功能相关内容,已被231网友关注,如果对知识点想更进一步了解可以在下方电子资料中获取。
Android Databinding关注功能
正文
说到关注功能,可能很多小伙伴要说了。谁不会写
但是没有合理的架构,大家写出来的代码很可能是一大堆的复制粘贴。比如十几个页面,都有这个关注按钮。然后,你是不是也要写十几个地方呢 然后修改的时候是不是也要修改十几个地方 我们是否考虑过一下几个问题?
- 可复用性 (是否重复代码和逻辑过多?)
- 可扩展性 (比如我这里是关注的人,传userId,下个地方又是文章 articleId)
- 可读性 冗余代码过多,势必要影响到可读性。
然后再看下自己写的代码,是否会面临上面的几个问题呢?是否有一种优雅的方式。帮我们一劳永逸。我这里给出一个解决方案是 使用Databinding ,如果对databinding使用不熟悉的,建议先去熟悉一下databinding用法
目标
我们要实现的目标是,希望能让关注这快的业务逻辑实现最大程度复用,在所有有关注按钮布局的页面,只需要引入一个同一个vm。实现关注和非关注状态逻辑的切换
Modle
下面以关注人来做为示例
要有两种状态,实体bean要继承自BaseObservable。配合databing实现mvvm效果,属性需要定义为@Bindable,当属性发生变化的时候,调用notifyPropertyChanged(属性ID)
public class User extends BaseObservable implements Serializable { public boolean hasFollow;//是否关注,是和否 @Bindable public boolean isHasFollow() { return hasFollow; } public void setHasFollow(boolean hasFollow) { this.hasFollow = hasFollow; notifyPropertyChanged(com.mooc.ppjoke.BR._all); } }
页面布局如下
显示效果
Presenter
package com.mooc.ppjoke.ui; import android.app.Application; import android.content.Context; import android.content.DialogInterface; import android.text.TextUtils; import android.view.View; import android.widget.Toast; import androidx.appcompat.app.AlertDialog; import androidx.arch.core.executor.ArchTaskExecutor; import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.Observer; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.mooc.libcommon.extention.LiveDataBus; import com.mooc.libcommon.global.AppGlobals; import com.mooc.libnetwork.ApiResponse; import com.mooc.libnetwork.ApiService; import com.mooc.libnetwork.JsonCallback; import com.mooc.ppjoke.model.Comment; import com.mooc.ppjoke.model.Feed; import com.mooc.ppjoke.model.TagList; import com.mooc.ppjoke.model.User; import com.mooc.ppjoke.ui.login.UserManager; import com.mooc.ppjoke.ui.share.ShareDialog; import org.jetbrains.annotations.NotNull; import java.util.Date; public class InteractionPresenter { //关注/取消关注一个用户 private static void toggleFollowUser(LifecycleOwner owner,User user) { ApiService.get("/ugc/toggleUserFollow") .addParam("followUserId", UserManager.get().getUserId()) .addParam("userId", feed.author.userId) .execute(new JsonCallback() { @Override public void onSuccess(ApiResponse response) { if (response.body != null) { boolean hasFollow = response.body.getBooleanValue("hasLiked"); user.setHasFollow(hasFollow); LiveDataBus.get().with(DATA_FROM_INTERACTION) .postValue(feed); } } @Override public void onError(ApiResponse response) { showToast(response.message); } }); } }
综上已经实现了简单的用户关注功能。activity不需要做任何事情。
以上就是Android开发使用Databinding实现关注功能mvvp的详细内容,更多关于Android Databinding关注功能的资料请关注码农之家其它相关文章!