1.RetorFitUtil
//声明
private static RetorFitUtil retorFitUtil;
public Retrofit retrofit;
//网络判断
public static boolean isNABoolean(Context context){
//判断参数是否为空
if (context!=null){
//获取连接管理器
ConnectivityManager connectivityManager = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
//获取网络状态
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
//判断网络是 否可用
if (activeNetworkInfo!=null){
return activeNetworkInfo.isConnected();
}
}
return false;
}
//拦截器
HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() {
@Override
public void log(String message) {
Log.i("tab","tab=="+message);
}
});
OkHttpClient client = new OkHttpClient().newBuilder()
//拦截器
.addInterceptor(loggingInterceptor)
//出现错误重新连接
.retryOnConnectionFailure(true)
.build();
//构造方法私有化
private RetorFitUtil(){
retrofit = new Retrofit.Builder()
.baseUrl(Url.HE)
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.build();
}
//单利
public static synchronized RetorFitUtil getInRetorFitUtil(){
if (retorFitUtil==null){
retorFitUtil = new RetorFitUtil();
}
return retorFitUtil;
}
public <T>T setRetrofit(String url,Class<T> tClass){
return retrofit.create(tClass);
}
2.Api
@GET
public Observable<ResponseBody> getBennt(@Url String url);
3.URL
//http://172.17.8.100/small/commodity/v1/commodityList
public static String BASEURL="http://172.17.8.100/";
public static String URL="small/commodity/";
public static String HE = BASEURL+URL;
4.M
public MyCallBack myCallBack;
public MyCallBack myCallBack2;
public void requestData(){
RetorFitUtil retorFitUtil = RetorFitUtil.getInRetorFitUtil();
Api api = retorFitUtil.setRetrofit(Url.HE,Api.class);
String surl="v1/commodityList";
api.getBennt(surl)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Action1<ResponseBody>() {
@Override
public void call(ResponseBody responseBody) {
try {
String string = responseBody.string();
Gson gson = new Gson();
JsonBean2 jsonBean2 = gson.fromJson(string, JsonBean2.class);
myCallBack.succer(jsonBean2);
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
public void getBanner(){
RetorFitUtil inRetorFitUtil = RetorFitUtil.getInRetorFitUtil();
Api api = inRetorFitUtil.setRetrofit(Url.HE2, Api.class);
String burl = "v1/bannerShow";
api.getBennt(burl)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Action1<ResponseBody>() {
@Override
public void call(ResponseBody responseBody) {
try {
String string = responseBody.string();
Gson gson = new Gson();
BannerBean bannerBean = gson.fromJson(string, BannerBean.class);
myCallBack2.succer(bannerBean);
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
public void setMyModel(int type, MyCallBack myCallBack) {
if (type==1){
this.myCallBack = myCallBack;
}else{
this.myCallBack2 = myCallBack;
}
}
//内部接口
public interface MyCallBack{
public void succer(Object object);
}
5.P
public MyModel myModel;
public T tt;
public MyPesnter(T tt) {
myModel = new MyModel();
this.tt = tt;
}
@Override
public void onShu() {
myModel.setMyModel(1,new MyModel.MyCallBack() {
@Override
public void succer(Object object) {
((ContantInterface.VInterface)tt).shouZhan(object);
}
});
myModel.requestData();
}
@Override
public void onBanner(String url) {
myModel.setMyModel(2,new MyModel.MyCallBack() {
@Override
public void succer(Object object) {
BannerBean bannerBean = (BannerBean)object;
List<BannerBean.ResultBean> result = bannerBean.getResult();
((ContantInterface.VInterface)tt).shouBanner(result);
}
});
myModel.getBanner();
}
@Override
public void onDsply() {
if (tt!=null){
tt=null;
}
}
6.V
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
init();
}
private void init() {
btbar.init(getSupportFragmentManager())
.setImgSize(30,30)
.setFontSize(30)
.setTabPadding(0,0,0)
.addTabItem("Text1",R.mipmap.ic_launcher,FragOne.class)
.addTabItem("Text2",R.mipmap.ic_launcher_round,FragTwo.class)
;
}
7.V
View view = inflater.inflate(R.layout.frag_one, container, false);
unbinder = ButterKnife.bind(this, view);
pInterface = new MyPesnter(this);
//网络判断
boolean naBoolean = RetorFitUtil.isNABoolean(getActivity());
if(naBoolean){
pInterface.onShu();
pInterface.onBanner(null);
}else{
Toast.makeText(getActivity(),"无网络",Toast.LENGTH_LONG).show();
}
init();
init2();
init3();
return view;
}
@Override
public void onDestroyView() {
super.onDestroyView();
unbinder.unbind();
}
//热销新品
private void init() {
//布局管理器
LinearLayoutManager linear = new LinearLayoutManager(getActivity());
linear.setOrientation(LinearLayoutManager.HORIZONTAL);
rec.setLayoutManager(linear);
//适配器
recAdater = new RecAdater(list1, getActivity());
rec.setAdapter(recAdater);
}
//魔力时尚
private void init2() {
//布局管理器
LinearLayoutManager linear = new LinearLayoutManager(getActivity());
linear.setOrientation(LinearLayoutManager.VERTICAL);
rec2.setLayoutManager(linear);
//适配器
recAdater2 = new Rec2Adater(list2, getActivity());
rec2.setAdapter(recAdater2);
}
//品质生活
private void init3() {
//布局管理器
StaggeredGridLayoutManager stag = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
rec3.setLayoutManager(stag);
//适配器
recAdater3 = new Rec3Adater(list3, getActivity());
rec3.setAdapter(recAdater3);
}
boolean isGoing = true;
@Override
public void shouZhan(Object object) {
JsonBean2 jsonBean2 = (JsonBean2) object;
list1.addAll(jsonBean2.getResult().getRxxp().getCommodityList());
list2.addAll(jsonBean2.getResult().getPzsh().getCommodityList());
list3.addAll(jsonBean2.getResult().getMlss().getCommodityList());
//插入数据,子线程
if (isGoing){
isGoing = false;
new Thread(new Runnable() {
@Override
public void run() {
setVault();
}
}).start();
}
recAdater.notifyDataSetChanged();
}
//插入数据
public void setVault(){
//添加之前,先删除之前的数据
App.daoSession.getGouWuBeanDao().deleteAll();
//增强for循环
for (JsonBean2.ResultBean.RxxpBean.CommodityListBean rListBean1: list1){
//Bean
GouWuBean gouWuBean = new GouWuBean();
//图片
gouWuBean.setImage(rListBean1.getMasterPic());
//名称
gouWuBean.setName(rListBean1.getCommodityName());
//价格
gouWuBean.setPric(rListBean1.getPrice());
//添加数据
App.daoSession.insert(gouWuBean);
}
}
//网络判断
//查询数据
//轮播图
@Override
public void shouBanner(List<BannerBean.ResultBean> blist) {
for (int i = 0; i < blist.size(); i++) {
banner1.add(blist.get(i).getImageUrl());
//banner2.add(blist.get(i).getTitle());
}
banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR)
.setImages(banner1)
//.setBannerTitles(banner2)
.setImageLoader(new Image())
.isAutoPlay(true)
.start();
}
//轮播图
public class Image extends ImageLoader {
@Override
public void displayImage(Context context, Object path, ImageView imageView) {
//加载图片
imageView.setImageURI(Uri.parse((String) path));
//圆角
GenericDraweeHierarchy gene = GenericDraweeHierarchyBuilder
.newInstance(getResources())
//圆角半径
.setRoundingParams(RoundingParams.fromCornersRadius(20))
.build();
simp.setHierarchy(gene);
}
@Override
public ImageView createImageView(Context context) {
simp = new SimpleDraweeView(context);
return simp;
}
}
@Override
public void onDestroy() {
super.onDestroy();
pInterface.onDsply();
pInterface = null;
}
8.App
public static DaoSession daoSession;
@Override
public void onCreate() {
super.onCreate();
Tu();
Shu();
}
private void Shu() {
DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(this,"yyy");
SQLiteDatabase writableDatabase = devOpenHelper.getWritableDatabase();
DaoMaster daoMaster = new DaoMaster(writableDatabase);
daoSession = daoMaster.newSession();
}
private void Tu() {
DiskCacheConfig diskCacheConfig = DiskCacheConfig.newBuilder(this)
.setBaseDirectoryName("kkk")
.setBaseDirectoryPath(Environment.getExternalStorageDirectory())
.build();
ImagePipelineConfig imagePipelineConfig = ImagePipelineConfig.newBuilder(this)
.setMainDiskCacheConfig(diskCacheConfig)
.build();
//初始化
Fresco.initialize(this,imagePipelineConfig);
}
9.XRec
xrecId.setPullRefreshEnabled(true);
xrecId.setLoadingMoreEnabled(true);
//布局管理器
LinearLayoutManager linear = new LinearLayoutManager(this);
linear.setOrientation(LinearLayoutManager.VERTICAL);
//衔接
xrecId.setLayoutManager(linear);
//适配器
xrecAdapter = new XrecAdapter(list,MainActivity.this);
xrecId.setAdapter(xrecAdapter);
xrecId.setLoadingListener(new XRecyclerView.LoadingListener() {
@Override
public void onRefresh() {
list.clear();
page=1;
pIterface.onZhan(page);
xrecId.refreshComplete();
}
@Override
public void onLoadMore() {
page++;
pIterface.onZhan(page);
xrecId.loadMoreComplete();
}