实战:5天重写京东某项目

  • 作者:彭老师
  • 日期:2020-06-19
  • 类型:Android
  • 说明:本文源于彭老师手写摘要,如需转载请带上链接或注明出处!

直接上图吧

看到大家的回应,我简单介绍下这个项目的结构。混口饭吃的工作大家别用科研的眼光去计较,谢谢!

组件化简介:

gradle配置,可以大致参考下

项目的代码

package com.xyz.xyz.others.instalment.products;

import android.os.Bundle;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.RecyclerView;

import com.cmonbaby.arouter.annotation.ARouter;
import com.cmonbaby.arouter.annotation.Parameter;
import com.cmonbaby.arouter.core.ParameterManager;
import com.cmonbaby.arouter.core.RouterManager;
import com.cmonbaby.butterknife.annotation.BindView;
import com.cmonbaby.butterknife.core.ButterKnife;
import com.cmonbaby.http.core.HttpHelper;
import com.cmonbaby.http.utils.ParamsUtils;
import com.cmonbaby.utils.Cons;
import com.xyz.xyz.common.adapter.BaseAdapter;
import com.xyz.xyz.common.base.BaseRecyclerView;
import com.xyz.xyz.common.model.BaseEntity;
import com.xyz.xyz.common.model.PageEntity;
import com.xyz.xyz.common.utils.CommonUtils;
import com.xyz.xyz.common.utils.HttpBiz;
import com.xyz.xyz.common.views.CommonToolbar;
import com.xyz.xyz.others.R;
import com.xyz.xyz.others.R2;
import com.xyz.xyz.others.adapter.ProductAdapter;
import com.xyz.xyz.others.api.Interface_v2;
import com.xyz.xyz.others.model.YfStageProduct;

import java.util.HashMap;
import java.util.Map;

import rx.Subscription;

/**
* 金融产品
*/
@ARouter(path = "/others/ProductsActivity")
public class ProductsActivity extends BaseRecyclerView<YfStageProduct> {

@BindView(id = R2.id.commonToolbar)
CommonToolbar toolbar;
@Parameter
String carDkje; // 贷款金额
@Parameter
int carHknx; // 贷款年限

private Interface_v2 service;
private ProductAdapter adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_product_list);
ButterKnife.bind(this); // 常规用法
ParameterManager.getInstance().loadParameter(this); // 懒加载

toolbar.setTitleContent("金融产品");
initBackClickListener(toolbar);
service = retrofit.createService(Interface_v2.class);

initRecyclerAndAdapter();
initRefreshLayout();
initLoadMore();

initListener();
if (carHknx != 0) post();
}

private void initListener() {
adapter.setOnItemClickListener((adapter, view, position) -> {
YfStageProduct entity = (YfStageProduct) adapter.getItem(position);
if (entity == null) return;
RouterManager.getInstance()
.build()
.withInt("productId", entity.getpId())
.withString("productName", entity.getProductName())
.withResult()
.navigation(context);
});
}

/**
* 金融产品列表
*/
private void post() {
Subscription s = HttpHelper.Builder
.builder(service.productList(CommonUtils.getToken(context),
params(pageInfo.getPage())))
.callback(new HttpBiz<BaseEntity<PageEntity<YfStageProduct>>>() {
@Override
public void onSuccessful(BaseEntity<PageEntity<YfStageProduct>> base) {
showDatas(base.getData().getData());
}
})
.toSubscribe();
addSubscription(s);
}

private Map<String, String> params(int page) {
Map<String, String> params = new HashMap<>();
params.put("money", carDkje); // 贷款金额
params.put("payType", String.valueOf(carHknx)); // 贷款年限
params.put("page", String.valueOf(page));
params.put("rows", String.valueOf(Cons.PAGE_ROWS));
return ParamsUtils.checkParams(params);
}

@Override
protected BaseAdapter<YfStageProduct> createRecycleViewAdapter() {
adapter = new ProductAdapter(R.layout.adapter_product_item);
return adapter;
}

@Override
protected SwipeRefreshLayout createSwipeRefresh() {
return findViewById(R.id.swipeRefreshLayout);
}

@Override
protected RecyclerView createRecyclerView() {
return findViewById(R.id.recyclerView);
}

@Override
public void onRefresh() {
post();
}

@Override
public void onLoadMore() {
post();
}

}

可能有很多同学对于Jcenter的全球中央仓库感兴趣,请在评论区告诉我,有空我会写篇文章教大家怎么玩