Android开发Databinding+Retrofit+RxJava+ViewMoel+BaseQuickAdapter

释放双眼,带上耳机,听听看~!

ps:最近在学习MVVM框架,其中的列表展示在网上查了好多,大牛们写的表示有点看不懂,然后自己就根据所学的内容进行了编写,可能很直白,望谅解,废话不多说,直接上代码:
1.简单的分层:
在这里插入图片描述
2.对于那些databinding的引入这边就不贴代码了 直接上主布局:


<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
<variable
name="user"
type="com.example.databindingrecycler.viewmodel.AutoMailModelView" />
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler"
android:layout_width="match_parent"
android:layout_height="wrap_content"></androidx.recyclerview.widget.RecyclerView>
</LinearLayout>
</layout>

主活动页面代码:

    @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
autoMailModelView = ViewModelProviders.of(this).get(AutoMailModelView.class);
initView();
initObserve();
}
private void initView() {
list = new ArrayList<>();
adapter = new AutoMailAdapter(list);
binding.recycler.setLayoutManager(new LinearLayoutManager(this));
binding.recycler.setAdapter(adapter);
}
private void initObserve() {
autoMailModelView.loadData().observe(this, new Observer<AutoMailEntity>() {
@Override
public void onChanged(AutoMailEntity autoMailEntity) {
if (autoMailEntity.getState().equals("access")) {
list.addAll(autoMailEntity.getDate());
adapter.notifyDataSetChanged();
}
}
});
}
ViewModel:(网络请求操作)
public class AutoMailModelView extends ViewModel {
public MutableLiveData<AutoMailEntity> loadData() {
final MutableLiveData<AutoMailEntity> liveData = new MutableLiveData<>();
final String address = "https://raw.githubusercontent.com/xueqiya/";
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(address)//基础URL 建议以 / 结尾
.addConverterFactory(GsonConverterFactory.create())//设置 Json 转换器
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())//RxJava 适配器
.build();
WorkPlaneService workPlaneService = retrofit.create(WorkPlaneService.class);
workPlaneService.getre()
.subscribeOn(Schedulers.io())//IO线程加载数据
.observeOn(AndroidSchedulers.mainThread())//主线程显示数据
.subscribe(new Subscriber<AutoMailEntity>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
liveData.setValue(null);
Log.d("请求失败", e.toString());
}
@Override
public void onNext(AutoMailEntity autoMailEntity) {
liveData.setValue(autoMailEntity);
}
});
return liveData;
}

其他的就不贴了 ,本项目已上传git https://github.com/yuhang66/DatabindingRec

人已赞赏
Android文章

Android 教你一步步搭建MVP+Retrofit+RxJava网络请求框架

2020-3-11 11:41:43

Android文章

Android开发中SQLite实时刷新(数据源观察者模式)

2020-3-11 12:50:58

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索