-
Notifications
You must be signed in to change notification settings - Fork 11
Home
Welcome to the XDroid-Databinding wiki!
XDroid-Databinding是XDroid Android快速开发框架的Databinding版本,其使用方式类似于XDroid,大部分源码也来自XDroid。由UI、Cache、Event、ImageLoader、Kit、Log、Router、Net等几个部分组成。
XDroid-Databinding主要有这些特性:
- 基于MVC,可快速切换到MVP
- 提供
XActivity、XFragment、XLazyFragment等基类,可快速进行开发 - 内置了
EventBus,可自由切换到其他事件订阅库 - 网络请求为OkHttp+Retrofit2+RxJava2
- 使用Rxlifecycle管理订阅,防止rx出现内存泄漏
- 引入三方库极少
- 使用Google官方Databinding
- 基于XDroid-Base,包含常用的快速开发工具类。
- 提供
SimpleRecAdapter、SimpleListAdapte、XRecyclerAdapter、XListAdapter等基类 - 实现了Memory、Disk、SharedPreferences三种方式的缓存,可自由扩展
- 内置
Glide,可自由切换其他图片加载库 - 可输出漂亮的
Log,支持Json、Xml、Throwable等,蝇量级实现 - 内置链式路由
- 内置
Toast工具类 - 内置常用工具类:
package、random、file...,提供的都是非常常用的方法 - 内置加密工具类
XCodec,你想要的加密姿势都有
首先在您的app module 中 添加如下依赖:
android {
dataBinding {
enabled true
}
}allprojects {
repositories {
jcenter()
maven { url "https://jitpack.io" }
}
}dependencies {
compile 'com.github.fodroid:XDroid-Databinding:v1.3'
}项目的Activity可直接继承XActivity,也可重新写一个基类Activity并让其继承XActivity,子类Activity必须实现这四个方法:
void initData(Bundle savedInstanceState); //初始化数据
void setListener(); //设置事件监听
int getLayoutId(); //设置布局资源文件id
boolean useEventBus(); //是否使用eventbus这些类的定义在UiCallback接口中,若要进行修改,可直接修改此类。 XActivity中还实现了UiDelegate,实现常用的公共方法,在子类中可直接使用。其中还实现了databinding方法,通过getBinding得到ViewDataBinding。
getBinding().viewPager.setAdapter(adapter);
getBinding().viewPager.setOffscreenPageLimit(3);
getBinding().tabLayout.setupWithViewPager(getBinding().viewPager);XFragment的实现与XActivity一致,为了方便的对Fragment和Activity进行切换,也就是只需要修改继承父类,就可改变Fragment&Activity的归属。其使用方法与XActivity是一致的。
XLazyFragment实现了懒加载,其使用方式与XFragment一致。
UiDelegate是一个接口,封装了一些常见的公共方法,供XActivity、XFragment、XLazyFragment的子类使用,其定义如下:
public interface UiDelegate {
void resume();
void pause();
void destory();
void visible(boolean flag, View view);
void gone(boolean flag, View view);
void inVisible(View view);
void toastShort(String msg);
void toastLong(String msg);
}XDroid中内置了UiDelegateBase实现类。当然你也可以根据需求在此基础上定义自己的接口进行扩展。
public class GanhuoAdapter extends SimpleRecAdapter<GankResults.Item,
SimpleRecBindingViewHolder<AdapterGanhuoBinding>> {
public static final int TAG_VIEW = 0;
public GanhuoAdapter(Context context) {
super(context);
}
@Override
public SimpleRecBindingViewHolder newViewHolder(View itemView) {
return new SimpleRecBindingViewHolder(itemView);
}
@Override
public int getLayoutId() {
return R.layout.adapter_ganhuo;
}
@Override
public void onBindViewHolder(final SimpleRecBindingViewHolder<AdapterGanhuoBinding> holder, final int position) {
final GankResults.Item item = data.get(position);
holder.getBinding().setItem(item);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (getSimpleItemClick() != null) {
getSimpleItemClick().onItemClick(position, item, TAG_VIEW, holder);
}
}
});
}
}事件订阅,对应包event
使用事件订阅,需要重写XActivity、XFragment或者XLazyFragment的useEventBus方法,当返回true时,表示使用事件订阅。
@Override
public boolean useEventBus() {
return false;
}EventBus的使用
XDroid中内置实现了EventBus,使用时只需要调用
BusFactory.getBus().register(this);XActivity&XFragment&XLazyFragment已经有默认实现,无需额外调用。
EventBus使用最新的3.0,去了解详情EventBus
需要说明的是: 事件类需要实现IEvent接口
事件发送:
BusFactory.getBus().register(new MsgEvent());在此之前你需要先了解一下下面四个库:
Retrofit:https://github.com/square/retrofit
Okhttp:https://github.com/square/okhttp
RxJava:https://github.com/ReactiveX/RxJava
RxLifecycle:https://github.com/trello/RxLifecycle
其他使用请参照XDroid-Base,详细说明请前往wiki。