加权限 compile 'com.android.support:recyclerview-v7:28.+' compile 'com.squareup.retrofit2:retrofit:2.0.0' compile 'com.squareup.retrofit2:converter-gson:2.0.2' compile 'io.reactivex.rxjava2:rxjava:2.0.0-RC3' compile 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0-RC3' compile 'io.reactivex.rxjava2:rxandroid:2.0.0-RC1' compile 'com.squareup.okio:okio:1.5.0' implementation 'com.android.support:support-v4:28.0.0-rc01' compile 'com.squareup.okhttp3:okhttp:3.4.2' compile 'com.squareup.okhttp3:logging-interceptor:3.4.1' compile 'com.facebook.fresco:fresco:0.9.0+' compile 'org.greenrobot:greendao:3.0.1' compile 'org.greenrobot:greendao-generator:3.0.0'
//api public static String URL ="https://www.zhaoapi.cn/";
//apiservice
@GET("product/getCatagory")
Flowable<ShowBean> getShowview();
@GET("product/getProductCatagory")
Flowable<GoodsBean> getGoodsview(@Query("page") int page);
@GET("product/searchProducts")
Flowable<ShangBean> getShangview(@Query("keysword") String keysword, @Query("page") int page);
//application
@Override
public void onCreate() {
super.onCreate();
instance = this;
Fresco.initialize(this);
setDB();
}
//Inter
public interface SetonInter {
void OnData(ShowBean showBean);
}
model
public interface IShowModel {
void getData(SetonInter setonInter);
}
@Override
public void getData(final SetonInter setonInter) {
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() {
@Override
public void log(String message) {
Log.i("sssssss", "日志信息" + message);
}
});
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(interceptor)
.connectTimeout(5000, TimeUnit.SECONDS)
.writeTimeout(5000, TimeUnit.SECONDS)
.readTimeout(5000, TimeUnit.SECONDS)
.build();
Retrofit builder = new Retrofit.Builder()
.baseUrl(api.URL)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.client(client)
.build();
apiService apiService = builder.create(apiService.class);
Flowable<ShowBean> showview = apiService.getShowview();
showview.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new DisposableSubscriber<ShowBean>() {
@Override
public void onNext(ShowBean showBean) {
setonInter.OnData(showBean);
}
@Override
public void onError(Throwable t) {
}
@Override
public void onComplete() {
}
});
}
persenter
public interface IPensenter {
void getData();
}
public class Pensenter implements IPensenter,SetonInter{
IShowView iShowView;
ShowModel showModel;
public Pensenter(IShowView iShowView) {
showModel = new ShowModel();
this.iShowView = iShowView;
}
@Override
public void OnData(ShowBean showBean) {
iShowView.showData(showBean);
}
@Override
public void getData() {
showModel.getData(this);
}
}
View
public interface IShowView {
void showData(ShowBean showBean);
}
baseactivity
public abstract class BaseActivity<T extends Pensenter> extends AppCompatActivity {
private T presenter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//创建获取ID的方法
setContentView(getLayouId());
//创建presenten
presenter= getpresenter();
//初始化视图
initView();
//初始化数据
initData();
}
protected abstract void initData();
protected abstract void initView();
protected abstract T getpresenter();
protected abstract int getLayouId();
}
mainactivity
public class MainActivity extends BaseActivity<Pensenter> implements IShowView {
Pensenter pensenter;
private RecyclerView leftrecycler;
private RecyclerView rightrecycler;
@Override
protected void initData() {
}
@Override
protected void initView() {
leftrecycler = findViewById(R.id.leftrecycler);
rightrecycler = findViewById(R.id.rightrecycler);
leftrecycler.setLayoutManager(new LinearLayoutManager(this));
}
@Override
protected Pensenter getpresenter() {
pensenter = new Pensenter(this);
pensenter.getData();
return pensenter;
}
@Override
protected int getLayouId() {
return R.layout.activity_main;
}
@Override
public void showData(ShowBean showBean) {
LeftAdapter leftAdapter = new LeftAdapter(this);
leftAdapter.addData(showBean.getData());
leftrecycler.setLayoutManager(new LinearLayoutManager(this));
leftrecycler.setAdapter(leftAdapter);
}
}
本文介绍了一个基于Android平台的应用架构实现,包括模块化的组件设计、依赖注入、响应式编程RxJava的集成等。通过使用Retrofit进行网络请求、GreenDAO管理数据库,并结合RxJava实现了异步数据处理流程。
1845

被折叠的 条评论
为什么被折叠?



