展示

view层

package com.bwie.jingdong.frist.view;

import android.content.Context;

import com.bwie.jingdong.bean.BannerBean;
import com.bwie.jingdong.bean.CategoryBean;
import com.bwie.jingdong.bean.MainClassifyBean;
import com.bwie.jingdong.bean.NextClassifyBean;
import com.bwie.jingdong.bean.ProductBean;

import java.util.List;

/**
 * Created by dell on 2018/10/17.
 */

public interface FristView {

    void getBanner(List<BannerBean.DataBean> list);

    void getCategory(List<CategoryBean.DataBean> list);

    void getProduct(List<ProductBean.DataBean> list);

    Context getContext();

    void failed(Exception e);

}
 

model层

package com.bwie.jingdong.frist.model;

import com.bwie.jingdong.callback.ICallBack;
import com.bwie.jingdong.utils.HttpUtils;

import java.lang.reflect.Type;

/**
 * Created by dell on 2018/10/17.
 */

public class FristModel {
    public void getData(String url, ICallBack callBack, Type type){
        HttpUtils.getInstance().get(url,callBack,type);
    }
}
presenter层

package com.bwie.jingdong.frist.presenter;

import android.content.SharedPreferences;

import com.bwie.jingdong.bean.BannerBean;
import com.bwie.jingdong.bean.CategoryBean;
import com.bwie.jingdong.bean.MainClassifyBean;
import com.bwie.jingdong.bean.ProductBean;
import com.bwie.jingdong.callback.ICallBack;
import com.bwie.jingdong.frist.model.FristModel;
import com.bwie.jingdong.frist.view.FristView;
import com.google.gson.reflect.TypeToken;

import java.lang.reflect.Type;

/**
 * Created by dell on 2018/10/17.
 */

public class FristPresenter {
    private FristView fv;
    private FristModel fristModel;

    public void attach(FristView fv) {
        this.fv = fv;
        fristModel = new FristModel();
    }

    public void getBanner(){
        Type type = new TypeToken<BannerBean>(){}.getType();

        fristModel.getData("https://www.zhaoapi.cn/ad/getAd", new ICallBack() {
            @Override
            public void onSuccess(Object o) {
                BannerBean bannerBean = (BannerBean) o;
                if (bannerBean != null){
                    fv.getBanner(bannerBean.getData());
                }
            }

            @Override
            public void onFailed(Exception e) {
                fv.failed(e);
            }
        },type);
    }
    public void getCategroy(){
        Type type = new TypeToken<CategoryBean>(){}.getType();

        fristModel.getData("https://www.zhaoapi.cn/product/getCatagory", new ICallBack() {
            @Override
            public void onSuccess(Object o) {
                CategoryBean categoryBean = (CategoryBean) o;
                if (categoryBean != null){
                    fv.getCategory(categoryBean.getData());
                }
            }

            @Override
            public void onFailed(Exception e) {
                fv.failed(e);
            }
        },type);
    }
    public void getProducy(){
        Type type = new TypeToken<ProductBean>(){}.getType();
        fristModel.getData("https://www.zhaoapi.cn/product/getCarts?uid=71", new ICallBack() {
            @Override
            public void onSuccess(Object o) {
                ProductBean productBean = (ProductBean) o;
                if (productBean != null){
                    fv.getProduct(productBean.getData());
                }
            }

            @Override
            public void onFailed(Exception e) {
                fv.failed(e);
            }
        },type);
    }

    public void detach(){
        if (fv != null){
            fv = null;
        }
    }
}
主页面

package com.bwie.jingdong.frist.view;

import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;

import com.bwie.jingdong.R;
import com.bwie.jingdong.bean.MainClassifyBean;
import com.bwie.jingdong.bean.NextClassifyBean;
import com.bwie.jingdong.search.SearchActivity;
import com.bwie.jingdong.adapter.BannerAdapter;
import com.bwie.jingdong.adapter.CategoryAdapter;
import com.bwie.jingdong.adapter.ProductAdapter;
import com.bwie.jingdong.bean.BannerBean;
import com.bwie.jingdong.bean.CategoryBean;
import com.bwie.jingdong.bean.ProductBean;
import com.bwie.jingdong.frist.presenter.FristPresenter;
import com.uuzuche.lib_zxing.activity.CaptureActivity;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by dell on 2018/10/15.
 */

public class FristFragment extends Fragment implements FristView, View.OnClickListener {

    private ImageView imgRichscan;
    private EditText etSearch;
    private ImageView imgMessage;
    private RecyclerView rvSudoku;
    private RecyclerView rvProduct;
    private ViewPager vpBanner;

    private List<BannerBean.DataBean> bannerList;
    private List<CategoryBean.DataBean> categoryList;
    private List<ProductBean.DataBean> productList;
    private BannerAdapter bannerAdapter;
    private FristPresenter presenter;

    private ProductAdapter productAdapter;
    private CategoryAdapter categoryAdapter;

    private int REQUEST_CODE = 100;
    private Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            if (msg.what == 100){
                int current = vpBanner.getCurrentItem();
                if (current<bannerList.size()-1){
                    current++;
                }else {
                    current=0;
                }
                vpBanner.setCurrentItem(current);
                sendEmptyMessageDelayed(100,4000);
            }
        }
    };

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.frist_item,container,false);
        imgMessage = v.findViewById(R.id.img_message);
        imgRichscan = v.findViewById(R.id.img_richscan);
        etSearch = v.findViewById(R.id.et_search);
        rvSudoku = v.findViewById(R.id.rv_sudoku);
        rvProduct = v.findViewById(R.id.rv_product);
        vpBanner = v.findViewById(R.id.vp_banner);

        return v;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        initView();

        setListener();

        presenter = new FristPresenter();
        presenter.attach(this);
        presenter.getBanner();
        presenter.getCategroy();
        presenter.getProducy();


    }

    private void setListener() {
        etSearch.setOnClickListener(this);
        imgRichscan.setOnClickListener(this);
        imgMessage.setOnClickListener(this);
    }

    private void initView() {
        bannerList = new ArrayList<>();
        categoryList = new ArrayList<>();
        productList = new ArrayList<>();

        bannerAdapter = new BannerAdapter(getActivity(),bannerList);
        productAdapter = new ProductAdapter(getActivity(),productList);
        categoryAdapter = new CategoryAdapter(getActivity(),categoryList);

        vpBanner.setAdapter(bannerAdapter);
        rvSudoku.setAdapter(categoryAdapter);
        rvProduct.setAdapter(productAdapter);

        RecyclerView.LayoutManager clayoutManager = new GridLayoutManager(getActivity(),2, LinearLayoutManager.HORIZONTAL,false);
        RecyclerView.LayoutManager playoutManager = new GridLayoutManager(getActivity(),2, LinearLayoutManager.VERTICAL,false);

        rvSudoku.setLayoutManager(clayoutManager);
        rvProduct.setLayoutManager(playoutManager);

        handler.sendEmptyMessageDelayed(100,4000);
    }

    @Override
    public void getBanner(List<BannerBean.DataBean> list) {
        if (list != null){
            bannerList.clear();
            bannerList.addAll(list);
            bannerAdapter.notifyDataSetChanged();
        }
    }

    @Override
    public void getCategory(List<CategoryBean.DataBean> list) {
        if (list != null){
            categoryList.clear();
            categoryList.addAll(list);
            categoryAdapter.notifyDataSetChanged();
        }
    }

    @Override
    public void getProduct(List<ProductBean.DataBean> list) {
        if (list != null){
            productList.clear();
            productList.addAll(list);
            productAdapter.notifyDataSetChanged();
        }
    }

    @Override
    public void failed(Exception e) {
        Toast.makeText(getActivity(),"网络异常",Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.et_search:
                startActivity(new Intent(getActivity(), SearchActivity.class));
                break;
            case R.id.img_message:

                break;
            case R.id.img_richscan:
                Intent intent = new Intent(getContext(), CaptureActivity.class);
                startActivityForResult(intent, REQUEST_CODE);
                break;
        }
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        if (presenter != null){
            presenter.detach();
        }
    }
}
 

utils页面

package com.bwie.jingdong.utils;

import android.os.Handler;

import com.bwie.jingdong.callback.ICallBack;
import com.google.gson.Gson;

import java.io.IOException;
import java.lang.reflect.Type;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

/**
 * Created by dell on 2018/10/16.
 */

public class HttpUtils {

    private static volatile HttpUtils instance;

    private OkHttpClient client;

    private Handler handler = new Handler();

    private HttpUtils(){
        client = new OkHttpClient();
    }

    public static HttpUtils getInstance(){
        if (instance == null){
            synchronized (HttpUtils.class){
                if (null == instance){
                    instance = new HttpUtils();
                }
            }
        }
        return instance;
    }

    public void get(String url, final ICallBack callBack, final Type type){
        Request request = new Request.Builder()
                .get()
                .url(url)
                .build();
        Call call = client.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, final IOException e) {
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        callBack.onFailed(e);
                    }
                });
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String result = response.body().string();
                Gson gson = new Gson();
                final Object o = gson.fromJson(result,type);
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        callBack.onSuccess(o);
                    }
                });
            }
        });
    }

}
 

 

以下是对提供的参考资料的总结,按照要求结构化多个要点分条输出: 4G/5G无线网络优化与网规案例分析: NSA站点下终端掉4G问题:部分用户反馈NSA终端频繁掉4G,主要因终端主动发起SCGfail导致。分析显示,在信号较好的环境下,终端可能因节能、过热保护等原因主动释放连接。解决方案建议终端侧进行分析处理,尝试关闭节电开关等。 RSSI算法识别天馈遮挡:通过计算RSSI平均值及差值识别天馈遮挡,差值大于3dB则认定有遮挡。不同设备分组规则不同,如64T和32T。此方法可有效帮助现场人员识别因环境变化引起的网络问题。 5G 160M组网小区CA不生效:某5G站点开启100M+60M CA功能后,测试发现UE无法正常使用CA功能。问题原因在于CA频点集标识配置错误,修正后测试正常。 5G网络优化与策略: CCE映射方式优化:针对诺基亚站点覆盖农村区域,通过优化CCE资源映射方式(交织、非交织),提升RRC连接建立成功率和无线接通率。非交织方式相比交织方式有显著提升。 5G AAU两扇区组网:与三扇区组网相比,AAU两扇区组网在RSRP、SINR、下载速率和上传速率上表现不同,需根据具体场景选择适合的组网方式。 5G语音解决方案:包括沿用4G语音解决方案、EPS Fallback方案和VoNR方案。不同方案适用于不同的5G组网策略,如NSA和SA,并影响语音连续性和网络覆盖。 4G网络优化与资源利用: 4G室分设备利旧:面对4G网络投资压减与资源需求矛盾,提出利旧多维度调优策略,包括资源整合、统筹调配既有资源,以满足新增需求和提质增效。 宏站RRU设备1托N射灯:针对5G深度覆盖需求,研究使用宏站AAU结合1托N射灯方案,快速便捷地开通5G站点,提升深度覆盖能力。 基站与流程管理: 爱立信LTE基站邻区添加流程:未提供具体内容,但通常涉及邻区规划、参数配置、测试验证等步骤,以确保基站间顺畅切换和覆盖连续性。 网络规划与策略: 新高铁跨海大桥覆盖方案试点:虽未提供详细内容,但可推测涉及高铁跨海大桥区域的4G/5G网络覆盖规划,需考虑信号穿透、移动性管理、网络容量等因素。 总结: 提供的参考资料涵盖了4G/5G无线网络优化、网规案例分析、网络优化策略、资源利用、基站管理等多个方面。 通过具体案例分析,展示了无线网络优化中的常见问题及解决方案,如NSA终端掉4G、RSSI识别天馈遮挡、CA不生效等。 强调了5G网络优化与策略的重要性,包括CCE映射方式优化、5G语音解决方案、AAU扇区组网选择等。 提出了4G网络优化与资源利用的策略,如室分设备利旧、宏站RRU设备1托N射灯等。 基站与流程管理方面,提到了爱立信LTE基站邻区添加流程,但未给出具体细节。 新高铁跨海大桥覆盖方案试点展示了特殊场景下的网络规划需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值