-
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。