Fragment刷新为无与最后一条item共存

本文档详细介绍了在SeeAbnormalActivity中如何处理Fragment刷新导致的与最后一条数据共存的问题。首先,代码展示了如何初始化界面并设置布局,接着在onCreate和onStart方法中获取数据。然后,通过RefreshLayout实现上拉加载和下拉刷新,但关闭了上拉加载更多功能。当数据为空时,显示空数据视图。在数据绑定到RecyclerView时,如果存在数据则显示,否则显示'没有异常记录'提示。此外,还处理了异常信息的接受和上传,以及点击事件处理,确保在数据上传成功后,可以正确跳转到已受理详情页面。
摘要由CSDN通过智能技术生成

1.SeeAbnormalActivity.java

public class SeeAbnormalActivity extends AppCompatActivity {
    @Bind(R.id.activity_see_header_ll)
    LinearLayout see_header_ll;
    @Bind(R.id.activity_see_back_iv)
    ImageView see_back_iv;
    @Bind(R.id.item_see_abnormal_tv)
    TextView see_abnormal_tv;//A生产线
    @Bind(R.id.item_see_abnormal_tv2)
    TextView see_abnormal_tv2;//预处理工段
    @Bind(R.id.item_see_abnormal_tv3)
    TextView see_abnormal_tv3;//切断线
    @Bind(R.id.item_abnormal_people_tv4)
    TextView abnormal_people_tv4;//巡检人姓名
    @Bind(R.id.item_abnormal_day_tv5)
    TextView abnormal_day_tv5;//巡检时间
    @Bind(R.id.see_no_data)
    RelativeLayout see_no_data;
    @Bind(R.id.activity_see_refreshLayout)
    RefreshLayout see_refreshLayout;
    @Bind(R.id.activity_see_info_rv)
    RecyclerView see_info_rv;
    @Bind(R.id.activity_see_accept_btn)
    Button see_accept_btn;

    String checkMasId,positionName,craftName,checkPointName,checkUserName,businessTime;//收到intent传参 主表Id
    private ArrayList<SeeAbnormalBean> seeAbnormalList=new ArrayList<>();//整个数组
    private ArrayList<SeeAbnormalBean.CheckDetlConInfoBean> seeTypeList = new ArrayList<>();//内层数组
    private RecyclerView.LayoutManager seeManager;

    private SeeAbnormalAdapter seeAbnormalAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_see_abnormal);
        ButterKnife.bind(this);
        initView();
        initData();
    }

    @Override
    protected void onStart() {
        super.onStart();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        ButterKnife.unbind(this);
    }

    private void initData() {
        Intent intent = getIntent();
        Bundle bundle = intent.getExtras();

        checkMasId = (String) bundle.getSerializable("checkMasId");//得到传参 巡检点Id Button1继续传参
        positionName = (String) bundle.getSerializable("positionName");
        craftName = (String) bundle.getSerializable("craftName");
        checkPointName = (String) bundle.getSerializable("checkPointName");
        checkUserName = (String) bundle.getSerializable("checkUserName");
        businessTime = (String) bundle.getSerializable("businessTime");

        //界面上半部分赋值
        see_abnormal_tv.setText(positionName);
        see_abnormal_tv2.setText(craftName);
        see_abnormal_tv3.setText(checkPointName);
        abnormal_people_tv4.setText(checkUserName);
        abnormal_day_tv5.setText(businessTime);

        see_no_data.setVisibility(View.VISIBLE);
        seeManager = new LinearLayoutManager(SeeAbnormalActivity.this, LinearLayoutManager.VERTICAL, false);
        see_info_rv.setLayoutManager(seeManager);
        see_info_rv.setItemAnimator(new DefaultItemAnimator());//recycler的自定义动画实现

        //上拉加载下拉更新
        see_refreshLayout.setOnRefreshListener(new OnRefreshListener() {
            @Override
            public void onRefresh(@NonNull RefreshLayout refreshLayout) {
                getAbnormal(true);//异常信息
            }
        });
        see_refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
            @Override
            public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
                getAbnormal(false);
            }
        });
        //关闭上拉加载更多
        see_refreshLayout.setEnableLoadMore(false);
        see_refreshLayout.autoRefresh();//自动刷新
    }

    private void initView() {//通知栏白色,第一个linearlayout下移
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            StatusBarSetting.setStatusBarFullTransparent(this, true);
            int statusBarHeight = StatusBarSetting.getStatusBarHeight(this);
            see_header_ll.setPadding(0,statusBarHeight + 20,0,0);
        }
        else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            StatusBarSetting.setStatusBarHalfTransparent(this);
            int statusBarHeight = StatusBarSetting.getStatusBarHeight(this);
            see_header_ll.setPadding(0,statusBarHeight,0,0);
        }
    }

    @OnClick({R.id.activity_see_back_iv,R.id.activity_see_accept_btn})
    public void onViewClicked(View view) {
        switch (view.getId()) {
            case R.id.activity_see_back_iv:
                finish();
                break;
            case R.id.activity_see_accept_btn:
                //接口3
                if (seeAbnormalList.size()>0&&seeAbnormalList!=null){
                    new XPopup.Builder(this)
                            .asConfirm(
                                    "提示",
                                    "是否受理巡检点下所有异常?",
                                    new OnConfirmListener() {
                                        @Override
                                        public void onConfirm() {
                                            saveSeeAbnormal();
                                        }
                                    }
                            )
                            .show();
                }else {
                    ToastUtil.showToast(SeeAbnormalActivity.this,"没有异常记录");
                }
                break;
        }
    }

    //接口3 上传受理数据
    private void saveSeeAbnormal() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            try {
                HashMap<String,String> params = new HashMap<>();
                params.put("checkMasId", checkMasId);
                OkHTTPManger.getInstance(this).postAsynByMap(
                        AppConfig.getServerUrl() + "/bs/equCheckMas/changeAcceptanceState",
                        //"http://192.168.1.151:2030/bs/storeEquCheckUserCfg/saveCancelCheckDetlExecData",
                        params,
                        new HttpCallBack() {
                            @Override
                            public void onBefore(Request request) {
                            }

                            @Override
                            public void requestSuccess(Object result) {
                                JSONObject json = JSON.parseObject(result.toString());//object转为jsonObject
                              
                                if (json.getString("message").equals("success")){
                                    ToastUtil.showToast(SeeAbnormalActivity.this, "数据上传成功");
                                    //上传成功后跳转到该巡检点的已受理详情页面
                                    Intent intent = new Intent();
                                    intent.setClass(SeeAbnormalActivity.this, RepairActivity.class);
                                    intent.putExtra("checkMasId", checkMasId);//intent传参  巡检点主表
                                    intent.putExtra("positionName",positionName);//A生产线
                                    intent.putExtra("craftName",craftName);//预处理工段
                                    intent.putExtra("checkPointName",checkPointName);//切断线
                                    intent.putExtra("checkUserName",checkUserName);//张老四
                                    intent.putExtra("businessTime",businessTime);//时间
                                    startActivity(intent);
                                    finish();
                                }
                            }

                            @Override
                            public void authFailure() {
                                ToastUtil.showToast(SeeAbnormalActivity.this,"身份认证失败,请重新登录!");
                            }

                            @Override
                            public void requestError(String msg) {
                                ToastUtil.showToast(SeeAbnormalActivity.this,msg);
                            }

                            @Override
                            public void requestFailure(Request request, IOException e) {
                                if (e.getMessage().equals("timeout")){
                                    ToastUtil.showToast(SeeAbnormalActivity.this,"请求超时,请检查网络");
                                }
                                else{
                                    ToastUtil.showToast(SeeAbnormalActivity.this,"请求失败,请检查网络配置");
                                }
                            }

                            @Override
                            public void onAfter() {}
                        }
                );
            }
            catch (Exception e) {
                e.printStackTrace();
            }
        }
        else {
            try {
                List<Parameter> params = new ArrayList<>();
                params.add(new Parameter("checkMasId", checkMasId));
                SyncHttp syncHttp = new SyncHttp(this);
                syncHttp.httpPost(
                        AppConfig.getServerUrl() + "/bs/equCheckMas/changeAcceptanceState",
                        params,
                        new HttpCallBack() {
                            @Override
                            public void onBefore(Request request) {
                            }

                            @Override
                            public void requestSuccess(Object result) {
                              
                                JSONObject json = JSON.parseObject(result.toString());//object转为jsonObject
                                if (json.getString("message").equals("success")){
                                    ToastUtil.showToast(SeeAbnormalActivity.this, "数据上传成功");
                                    //上传成功后跳转到该巡检点的已受理详情页面
                                    Intent intent = new Intent();
                                    intent.setClass(SeeAbnormalActivity.this, RepairActivity.class);
                                    intent.putExtra("checkMasId", checkMasId);//intent传参  巡检点主表
                                    intent.putExtra("positionName",positionName);//A生产线
                                    intent.putExtra("craftName",craftName);//预处理工段
                                    intent.putExtra("checkPointName",checkPointName);//切断线
                                    intent.putExtra("checkUserName",checkUserName);//张老四
                                    intent.putExtra("businessTime",businessTime);//时间
                                    startActivity(intent);
                                    finish();
                                }
                            }

                            @Override
                            public void authFailure() {
                                ToastUtil.showToast(SeeAbnormalActivity.this,"身份认证失败,请重新登录!");
                            }

                            @Override
                            public void requestError(String msg) {
                                ToastUtil.showToast(SeeAbnormalActivity.this,msg);
                            }

                            @Override
                            public void requestFailure(Request request, IOException e) {
                                ToastUtil.showToast(SeeAbnormalActivity.this,"请求超时,请检查网络");
                            }

                            @Override
                            public void onAfter() {
                            }
                        }
                );
            }
            catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    //接口2 recycler
    private void getAbnormal(boolean isRefresh) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {//版本号高于6.0做以下操作; getAsynBackStringWithParms是ConfirmActivity出库接口
            try {
                HashMap<String,String> params = new HashMap<>();
                params.put("checkMasId", checkMasId);
                OkHTTPManger.getInstance(this).getAsynBackStringWithParms(//getAsynBackStringWithParms
                        AppConfig.getServerUrl() + "/bs/equCheckMas/getExecMsgByCheckMasId",
                        //"https://www.fastmock.site/mock/479a7fc04032cda80186024fb56cf70f/bs/equCheckMas/getExecMsgByCheckMasId",
                        params,
                        new HttpCallBack() {
                            @Override
                            public void onBefore(Request request) {
                            }

                            @Override
                            public void requestSuccess(Object result) {
                                JSONArray resultJsonArray = JSON.parseObject(result.toString()).getJSONArray("result");//巡检点
                            
                                if (resultJsonArray.size() > 0){
                                    setDataToView(resultJsonArray,isRefresh);
                                    see_no_data.setVisibility(View.GONE);
                                }else {
                                    see_no_data.setVisibility(View.VISIBLE);
                                }
                            }

                            @Override
                            public void authFailure() {
                                ToastUtil.showToast(SeeAbnormalActivity.this,"身份认证失败,请重新登录!");
                            }

                            @Override
                            public void requestError(String msg) {
                                ToastUtil.showToast(SeeAbnormalActivity.this,msg);
                            }

                            @Override
                            public void requestFailure(Request request, IOException e) {
                                if (e.getMessage().equals("timeout")){
                                    ToastUtil.showToast(SeeAbnormalActivity.this,"请求超时,请检查网络");
                                }
                                else{
                                    ToastUtil.showToast(SeeAbnormalActivity.this,"请求失败,请检查网络配置");
                                }
                            }

                            @Override
                            public void onAfter() {
                            }
                        }
                );
            }
            catch (Exception e) {
                e.printStackTrace();
            }
        }
        else {
            try {
                HashMap<String,String> params = new HashMap<>();
                params.put("checkMasId", checkMasId);
                SyncHttp syncHttp = new SyncHttp(this);
                syncHttp.httpGet(
                        AppConfig.getServerUrl() + "/bs/equCheckMas/getExecMsgByCheckMasId",
                        //"https://www.fastmock.site/mock/479a7fc04032cda80186024fb56cf70f/bs/equCheckMas/getExecMsgByCheckMasId",
                        params,
                        new HttpCallBack() {
                            @Override
                            public void onBefore(Request request) {
                            }

                            @Override
                            public void requestSuccess(Object result) {
                                JSONArray resultJsonArray = JSON.parseObject(result.toString()).getJSONArray("result");//巡检点
                                if (resultJsonArray.size() > 0){
                                    setDataToView(resultJsonArray,isRefresh);
                                    see_no_data.setVisibility(View.GONE);
                                }else {
                                    see_no_data.setVisibility(View.VISIBLE);
                                }
                            }

                            @Override
                            public void authFailure() {
                                ToastUtil.showToast(SeeAbnormalActivity.this,"身份认证失败,请重新登录!");
                            }

                            @Override
                            public void requestError(String msg) {
                                ToastUtil.showToast(SeeAbnormalActivity.this,msg);
                            }

                            @Override
                            public void requestFailure(Request request, IOException e) {
                                ToastUtil.showToast(SeeAbnormalActivity.this,"请求超时,请检查网络");
                            }

                            @Override
                            public void onAfter() {
                            }
                        }
                );
            }
            catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    //对接口2的数据处理
    private void setDataToView(JSONArray data,boolean isRefresh) {
        if (isRefresh)seeAbnormalList.clear();
        data.size();
        for (int i = 0; i < data.size(); i++) {//外层数组
            JSONObject m = data.getJSONObject(i);

            String pictureUrl = m.getString("pictureUrl");
            String businessTime = m.getString("businessTime");
            String checkDetlId = m.getString("checkDetlId");
            String equipmentCd = m.getString("equipmentCd");
            String equipmentName = m.getString("equipmentName");

            //checkDetlConInfo 内层数组
            JSONArray typeJsonArrsy = JSON.parseObject(m.toString()).getJSONArray("checkDetlConInfo");
            for(int j = 0; j < typeJsonArrsy.size();j++){
                JSONObject n = typeJsonArrsy.getJSONObject(j);

                String checkDetlConId = n.getString("checkDetlConId");
                String contentCd = n.getString("contentCd");
                String contentName = n.getString("contentName");
                String exceCd = n.getString("exceCd");
                String exceName = n.getString("exceName");
                String levelCd = n.getString("levelCd");
                String levelName = n.getString("levelName");
                String remarks = n.getString("remarks");

                //对SeeAbnormalBean.CheckDetlConInfoBean传入数据
                SeeAbnormalBean.CheckDetlConInfoBean checkDetlConInfoBean = new SeeAbnormalBean.CheckDetlConInfoBean();
                checkDetlConInfoBean.setCheckDetlConId(checkDetlConId);
                checkDetlConInfoBean.setContentCd(contentCd);
                checkDetlConInfoBean.setContentName(contentName);
                checkDetlConInfoBean.setExceCd(exceCd);
                checkDetlConInfoBean.setExceName(exceName);
                checkDetlConInfoBean.setLevelCd(levelCd);
                checkDetlConInfoBean.setLevelName(levelName);
                checkDetlConInfoBean.setRemarks(remarks);

                //在for循环里,为list赋值
                seeTypeList.add(checkDetlConInfoBean);
             
            }

            //对SeeAbnormalBean传入数据
            SeeAbnormalBean seeAbnormalBean = new SeeAbnormalBean();
            seeAbnormalBean.setBusinessTime(businessTime);
            seeAbnormalBean.setPictureUrl(pictureUrl);
            //checkDetlConInfo 内层数组
            seeAbnormalBean.setCheckDetlConInfo(seeTypeList);
            seeAbnormalBean.setCheckDetlId(checkDetlId);
            seeAbnormalBean.setEquipmentCd(equipmentCd);
            seeAbnormalBean.setEquipmentName(equipmentName);

            //在for循环里,为list赋值
            seeAbnormalList.add(seeAbnormalBean);
         
        }

        //item绑定数据
        seeAbnormalAdapter = new SeeAbnormalAdapter(seeAbnormalList,SeeAbnormalActivity.this);
        see_info_rv.setAdapter(seeAbnormalAdapter);
        setItemClick();//点击item里的照片 弹出大图模式
        seeAbnormalAdapter.notifyDataSetChanged();
        see_refreshLayout.finishRefresh();
        see_refreshLayout.finishLoadMore();
    }

    //点击item里的照片 弹出大图模式
    private void setItemClick() {
        seeAbnormalAdapter.setOnItemClickListener(new SeeAbnormalAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(View view, int position) {
                String itemUrl =seeAbnormalList.get(position).getPictureUrl();
                ArrayList<String> imgs = new ArrayList<>();
                imgs.add(itemUrl);
                Intent intent = new Intent(SeeAbnormalActivity.this, PhotoActivity.class);
                intent.putExtra(PhotoActivity.IMG_LIST_FLAG, imgs);
                intent.putExtra(PhotoActivity.IMG_LIST_POSITION_FLAG, position);
                startActivity(intent);
            }
        });
    }
}

2.AbnormalFragment.java

public class AbnormalFragment extends Fragment {//异常信息
    @Bind(R.id.fragment_abnormal_no_data)
    RelativeLayout abnormal_no_data;
    @Bind(R.id.fragment_abnormal_refreshLayout)
    RefreshLayout abnormal_refreshLayout;//上拉加载下拉刷新
    @Bind(R.id.fragment_abnormal_rv)
    RecyclerView abnormal_rv;

    private AbnormalAdapter abnormalAdapter;
    private ArrayList<AbnormalBean> abnormalList=new ArrayList<>();
    private RecyclerView.LayoutManager abnormalManager;
    private View abnormalView;

    private boolean isFirstLoading;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState){
        abnormalView=inflater.inflate(R.layout.fragment_abnormal,container,false);
        ButterKnife.bind(this,abnormalView);
        //是否第一次加载
        isFirstLoading = true;
        return abnormalView;
    }

    @Override
    public void onResume() {
        super.onResume();

        if (!isFirstLoading) {
            //如果不是第一次加载,刷新数据
           AbnormalRecycler(true);
        }
        isFirstLoading = false;
    }

    /*
     * onViewCreated是fragment的生命周期方法
     * */
    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        initView();
        initData();
    }

    private void initView() {
       abnormal_no_data.setVisibility(View.VISIBLE);
       abnormalManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false);
       abnormal_rv.setLayoutManager(abnormalManager);
       abnormal_rv.setItemAnimator(new DefaultItemAnimator());//recycler的自定义动画实现
    }

    private void initData() {
        //上拉加载下拉更新
        abnormal_refreshLayout.setOnRefreshListener(new OnRefreshListener() {
            @Override
            public void onRefresh(@NonNull RefreshLayout refreshLayout) {
                AbnormalRecycler(true);//异常信息
            }
        });
        abnormal_refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
            @Override
            public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
                AbnormalRecycler(false);
            }
        });
        abnormal_refreshLayout.autoRefresh();//自动刷新
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        ButterKnife.unbind(this);//关闭View
    }

    //接口1 异常recycler信息
    //isRefresh 是否是刷新
    private void AbnormalRecycler(boolean isRefresh) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            try {
                abnormalList = new ArrayList<AbnormalBean>();
                OkHTTPManger.getInstance(getActivity()).getAsynBackStringWithoutParms(
                        AppConfig.getServerUrl() + "/bs/equCheckMas/getExecMsgOfEquipmentMaintenance",
                        //"https://www.fastmock.site/mock/479a7fc04032cda80186024fb56cf70f/bs/equCheckMas/getExecMsgOfEquipmentMaintenance",
                        new HttpCallBack() {
                            @Override
                            public void onBefore(Request request) {
                            }

                            @Override
                            public void requestSuccess(Object result) {
                                JSONArray resultJson = JSON.parseObject(result.toString()).getJSONArray("result");//result下面是个数组,再for循环一次
//                                if (resultJson.size()>0&&resultJson!=null){
                              
                                    setDataToView(resultJson,isRefresh);
                                
//                                    abnormal_no_data.setVisibility(View.GONE);
//                                }else {
//                                    abnormal_no_data.setVisibility(View.VISIBLE);
//                                }
                            }

                            @Override
                            public void authFailure() {
                                ToastUtil.showToast(getActivity(),"身份认证失败,请重新登录!");
                            }

                            @Override
                            public void requestError(String msg) {
                                ToastUtil.showToast(getActivity(),msg);
                            }

                            @Override
                            public void requestFailure(Request request, IOException e) {
                                if (e.getMessage().equals("timeout")){
                                    ToastUtil.showToast(getActivity(),"请求超时,请检查网络");
                                }
                                else{
                                    ToastUtil.showToast(getActivity(),"请求失败,请检查网络配置");
                                }
                            }

                            @Override
                            public void onAfter() {
                            }
                        }
                );
            }
            catch (Exception e) {
                e.printStackTrace();
            }
        }
        else {
            try {
                abnormalList = new ArrayList<AbnormalBean>();
                SyncHttp syncHttp = new SyncHttp(getActivity());
                syncHttp.httpGet(
                        AppConfig.getServerUrl() + "/bs/equCheckMas/getExecMsgOfEquipmentMaintenance",
                        //"https://www.fastmock.site/mock/479a7fc04032cda80186024fb56cf70f/bs/equCheckMas/getExecMsgOfEquipmentMaintenance",
                        new HashMap<String, String>(),
                        new HttpCallBack() {
                            @Override
                            public void onBefore(Request request) {
                            }

                            @Override
                            public void requestSuccess(Object result) {
                                JSONArray resultJson = JSON.parseObject(result.toString()).getJSONArray("result");//result下面是个数组,再for循环一次
//                                if (resultJson.size() > 0){
                                    setDataToView(resultJson,isRefresh);
//                                    abnormal_no_data.setVisibility(View.GONE);
//                                }else {
//                                    abnormal_no_data.setVisibility(View.VISIBLE);
//                                }
                            }

                            @Override
                            public void authFailure() {
                                ToastUtil.showToast(getActivity(),"身份认证失败,请重新登录!");
                            }

                            @Override
                            public void requestError(String msg) {
                                ToastUtil.showToast(getActivity(),msg);
                            }

                            @Override
                            public void requestFailure(Request request, IOException e) {
                                ToastUtil.showToast(getActivity(),"请求超时,请检查网络");
                            }

                            @Override
                            public void onAfter() {
                            }
                        }

                );
            }
            catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    //对接口1的数据处理
    private void setDataToView(JSONArray data,boolean isRefresh) {
        if (isRefresh)abnormalList.clear();
        data.size();
        for (int i = 0; i < data.size(); i++) {
            JSONObject m = data.getJSONObject(i);
            //状态、巡检点、id
            String checkPointId = m.getString("checkPointId");
            String craftName = m.getString("craftName");
            String checkMasId = m.getString("checkMasId");
            String checkPointCd = m.getString("checkPointCd");
            String checkUserId = m.getString("checkUserId");
            String businessTime = m.getString("businessTime");
            String positionName = m.getString("positionName");
            String execState = m.getString("execState");
            String checkUserName = m.getString("checkUserName");
            String craftCd = m.getString("craftCd");
            String checkPointName = m.getString("checkPointName");
            String positionCd = m.getString("positionCd");
            String checkPointDesc = m.getString("checkPointDesc");

            //对RouteBean传入数据
            AbnormalBean abnormalBean = new AbnormalBean();
            abnormalBean.setCheckPointId(checkPointId);
            abnormalBean.setCraftName(craftName);
            abnormalBean.setCheckMasId(checkMasId);
            abnormalBean.setCheckPointCd(checkPointCd);
            abnormalBean.setCheckUserId(checkUserId);
            abnormalBean.setBusinessTime(businessTime);
            abnormalBean.setPositionName(positionName);
            abnormalBean.setExecState(execState);
            abnormalBean.setCheckUserName(checkUserName);
            abnormalBean.setCraftCd(craftCd);
            abnormalBean.setCheckPointName(checkPointName);
            abnormalBean.setPositionCd(positionCd);
            abnormalBean.setCheckPointDesc(checkPointDesc);

            //在for循环里,为list赋值
            abnormalList.add(abnormalBean);
        
        }
        //item绑定数据
        abnormalAdapter = new AbnormalAdapter(abnormalList,getActivity());
        abnormal_rv.setAdapter(abnormalAdapter);
        abnormalAdapter.notifyDataSetChanged();
        abnormal_refreshLayout.finishRefresh();
        abnormal_refreshLayout.finishLoadMore();

        abnormal_no_data.setVisibility(abnormalList.size()>0?View.GONE:View.VISIBLE);
        //exectState为1 点击跳转
        setItemClick();
    }

    //item的监听
    private void setItemClick() {
        abnormalAdapter.setOnItemClickListener(new AbnormalAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(View view, int position, String checkMasId, String execState) {
                if (execState.equals("1")) {
                    Intent intent = new Intent();
                    intent.setClass(getActivity(), SeeAbnormalActivity.class);
                    intent.putExtra("checkMasId", checkMasId);//intent传参  主表Id
                    intent.putExtra("positionName",abnormalList.get(position).getPositionName());//A生产线
                    intent.putExtra("craftName",abnormalList.get(position).getCraftName());//预处理工段
                    intent.putExtra("checkPointName",abnormalList.get(position).getCheckPointName());//切断线
                    intent.putExtra("checkUserName",abnormalList.get(position).getCheckUserName());//张老四
                    intent.putExtra("businessTime",abnormalList.get(position).getBusinessTime());//时间
                    startActivity(intent);
                }
            }
        });
    }

}

3.RepairActivity.java

public class RepairActivity extends AppCompatActivity {
    @Bind(R.id.activity_repair_header_ll)
    LinearLayout repair_header_ll;
    @Bind(R.id.activity_repair_back_iv)
    ImageView repair_back_iv;
    @Bind(R.id.activity_repair_route_tv)
    TextView repair_route_tv;
    @Bind(R.id.activity_repair_position_tv2)
    TextView repair_position_tv2;
    @Bind(R.id.activity_repair_route_point_tv3)
    TextView repair_route_point_tv3;
    @Bind(R.id.activity_repair_people_tv4)
    TextView repair_people_tv4;
    @Bind(R.id.activity_repair_day_tv5)
    TextView repair_day_tv5;
    @Bind(R.id.repair_no_data)
    RelativeLayout repair_no_data;
    @Bind(R.id.activity_repair_refreshLayout)
    RefreshLayout repair_refreshLayout;
    @Bind(R.id.activity_repair_info_rv)
    RecyclerView repair_info_rv;

    String checkMasId,//从fragment跳转过来的 从SeeActivity跳转过来的 得到的主表id
            positionName,craftName,checkPointName,checkUserName,businessTime;
    private ArrayList<RepairBean> repairList=new ArrayList<>();//整个数组
    private RecyclerView.LayoutManager repairManager;

    private RepairAdapter repairAdapter;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_repair);
        ButterKnife.bind(this);
        initView();
        initData();
    }

    @Override
    protected void onStart() {
        super.onStart();
        getRepair(true);//初始化接口5数据
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        ButterKnife.unbind(this);//关闭View
    }

    private void initData() {
        Intent intent = getIntent();
        Bundle bundle = intent.getExtras();
        checkMasId = (String) bundle.getSerializable("checkMasId");//从fragment跳转过来的 从SeeActivity跳转过来的
     
        positionName = (String) bundle.getSerializable("positionName");
        craftName = (String) bundle.getSerializable("craftName");
        checkPointName = (String) bundle.getSerializable("checkPointName");
        checkUserName = (String) bundle.getSerializable("checkUserName");
        businessTime = (String) bundle.getSerializable("businessTime");

        //界面上半部分赋值
        repair_route_tv.setText(positionName);//A生产线
        repair_position_tv2.setText(craftName);//预处理工段
        repair_route_point_tv3.setText(checkPointName);//切断线
        repair_people_tv4.setText(checkUserName);//张老四
        repair_day_tv5.setText(businessTime);//时间

        //上拉加载下拉更新
        repair_refreshLayout.setOnRefreshListener(new OnRefreshListener() {
            @Override
            public void onRefresh(@NonNull RefreshLayout refreshLayout) {
                getRepair(true);//检修信息
            }
        });
        repair_refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
            @Override
            public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
                getRepair(false);
            }
        });
        repair_refreshLayout.autoRefresh();//自动刷新
    }

    private void initView() {//通知栏白色,第一个linearlayout下移
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            StatusBarSetting.setStatusBarFullTransparent(this, true);
            int statusBarHeight = StatusBarSetting.getStatusBarHeight(this);
            repair_header_ll.setPadding(0,statusBarHeight + 20,0,0);
        }
        else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            StatusBarSetting.setStatusBarHalfTransparent(this);
            int statusBarHeight = StatusBarSetting.getStatusBarHeight(this);
            repair_header_ll.setPadding(0,statusBarHeight,0,0);
        }

        repair_no_data.setVisibility(View.VISIBLE);
        repairManager = new LinearLayoutManager(RepairActivity.this, LinearLayoutManager.VERTICAL, false);
        repair_info_rv.setLayoutManager(repairManager);
        repair_info_rv.setItemAnimator(new DefaultItemAnimator());//recycler的自定义动画实现
    }

    @OnClick({R.id.activity_repair_back_iv})
    public void onViewClicked(View view) {
        switch (view.getId()) {
            case R.id.activity_repair_back_iv:
                finish();
                break;
        }
    }

    //接口5 recycler
    private void getRepair(boolean isRefresh) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {//版本号高于6.0做以下操作; getAsynBackStringWithParms是ConfirmActivity出库接口
            try {
                HashMap<String,String> params = new HashMap<>();
                params.put("checkMasId", checkMasId);
                OkHTTPManger.getInstance(this).getAsynBackStringWithParms(//getAsynBackStringWithParms
                        AppConfig.getServerUrl() + "/bs/equCheckMas/getAcceptanceDetlByCheckMasId",
                        params,
                        new HttpCallBack() {
                            @Override
                            public void onBefore(Request request) {
                            }

                            @Override
                            public void requestSuccess(Object result) {
                                JSONArray resultJsonArray = JSON.parseObject(result.toString()).getJSONArray("result");//巡检点
                           
                                setDataToView(resultJsonArray,isRefresh); 
                            }

                            @Override
                            public void authFailure() {
                                ToastUtil.showToast(RepairActivity.this,"身份认证失败,请重新登录!");
                            }

                            @Override
                            public void requestError(String msg) {
                                ToastUtil.showToast(RepairActivity.this,msg);
                            }

                            @Override
                            public void requestFailure(Request request, IOException e) {
                                if (e.getMessage().equals("timeout")){
                                    ToastUtil.showToast(RepairActivity.this,"请求超时,请检查网络");
                                }
                                else{
                                    ToastUtil.showToast(RepairActivity.this,"请求失败,请检查网络配置");
                                }
                            }

                            @Override
                            public void onAfter() {
                            }
                        }
                );
            }
            catch (Exception e) {
                e.printStackTrace();
            }
        }
        else {
            try {
                HashMap<String,String> params = new HashMap<>();
                params.put("checkMasId", checkMasId);
                SyncHttp syncHttp = new SyncHttp(this);
                syncHttp.httpGet(
                        AppConfig.getServerUrl() + "/bs/equCheckMas/getAcceptanceDetlByCheckMasId",
                        params,
                        new HttpCallBack() {
                            @Override
                            public void onBefore(Request request) {
                            }

                            @Override
                            public void requestSuccess(Object result) {
                                JSONArray resultJsonArray = JSON.parseObject(result.toString()).getJSONArray("result");//巡检点
                              
                                if (resultJsonArray.size() > 0){
                                    setDataToView(resultJsonArray,isRefresh);
                                    repair_no_data.setVisibility(View.GONE);
                                }else {
                                    repair_no_data.setVisibility(View.VISIBLE);
                                }
                            }

                            @Override
                            public void authFailure() {
                                ToastUtil.showToast(RepairActivity.this,"身份认证失败,请重新登录!");
                            }

                            @Override
                            public void requestError(String msg) {
                                ToastUtil.showToast(RepairActivity.this,msg);
                            }

                            @Override
                            public void requestFailure(Request request, IOException e) {
                                ToastUtil.showToast(RepairActivity.this,"请求超时,请检查网络");
                            }

                            @Override
                            public void onAfter() {
                            }
                        }
                );
            }
            catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    //对接口5数据的处理
    private void setDataToView(JSONArray data, boolean isRefresh) {
        if (isRefresh)repairList.clear();
        data.size();
        for (int i = 0; i < data.size(); i++){
            JSONObject m = data.getJSONObject(i);

            String checkMasId = m.getString("checkMasId");
            String mendDetlId = m.getString("mendDetlId");
            String pictureUrl = m.getString("pictureUrl");
            String checkDetlId = m.getString("checkDetlId");
            String equipmentName = m.getString("equipmentName");
            String equipmentCd = m.getString("equipmentCd");
            String businessTime = m.getString("businessTime");
            String checkMendId = m.getString("checkMendId");//checkMendId
            String execState = m.getString("execState");

            //对RepairBean传入数据
            RepairBean repairBean = new RepairBean();

            repairBean.setCheckMasId(checkMasId);
            repairBean.setMendDetlId(mendDetlId);
            repairBean.setPictureUrl(pictureUrl);
            repairBean.setCheckDetlId(checkDetlId);
            repairBean.setEquipmentName(equipmentName);
            repairBean.setEquipmentCd(equipmentCd);
            repairBean.setBusinessTime(businessTime);
            repairBean.setCheckMendId(checkMendId);
            repairBean.setExecState(execState);

            //在for循环里,为list赋值
            repairList.add(repairBean);
          
        }

        //item绑定数据
        repairAdapter = new RepairAdapter(repairList,RepairActivity.this);
        setItemClick();

        repair_info_rv.setAdapter(repairAdapter);
        repairAdapter.notifyDataSetChanged();
        repair_refreshLayout.finishRefresh();
        repair_refreshLayout.finishLoadMore();
    }

    //点击item里的检修情况说明按钮 弹出edit对话框
    private void setItemClick() {
        repairAdapter.setOnItemClickListener1(new SeeAbnormalAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(View view, int position) {
                if (view.getId() == R.id.item_repair_complete_ll) {
                    //这里写上传
                    new XPopup.Builder(RepairActivity.this)
                            .asConfirm(
                                    "提示",
                                    "是否处理完成?",
                                    new OnConfirmListener() {
                                        @Override
                                        public void onConfirm() {
                                            //接口6
                                            saveRepairInfo(position);
                                        }
                                    }
                            )
                            .show();
                }


                if (view.getId() == R.id.repair_situation_ll) {
                    //打印adaptr里的内容
                
                    new XPopup.Builder(RepairActivity.this)
                            .autoOpenSoftInput(true)//唤起键盘
                            .isRequestFocus(false)
                            .asInputConfirm("检修情况说明", "请输入检修情况", repairList.get(position).getRemarks(), "检修情况可更改!",
                                    new OnInputConfirmListener() {
                                        @Override
                                        public void onConfirm(String text) {
                                            if (text.length() > 0 && text != null) {
                                                repairList.get(position).setRemarks(text);
                                                repairAdapter.notifyDataSetChanged();
                                                //上传取消原因接口函数
                                                ToastUtil.showToast(RepairActivity.this, "检修情况说明保存成功");
                                            } else {
                                                ToastUtil.showToast(RepairActivity.this, "检修情况说明不能为空");
                                            }
                                        }
                                    })
                            .show();
                }


            }
        });
    }

    //接口6 上传检修情况说明和id数据
    private void saveRepairInfo(int position) {
        JSONObject paramJson = new JSONObject();
        paramJson.put("checkMasId", checkMasId);
        paramJson.put("checkMendId",repairList.get(position).getCheckMendId());
        paramJson.put("mendDetlId",repairList.get(position).getMendDetlId());
        paramJson.put("remarks",repairList.get(position).getRemarks());
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            try {
                HashMap<String,String> params = new HashMap<>();
                params.put("paramJson", paramJson.toJSONString());
                OkHTTPManger.getInstance(this).postAsynByMap(
                        AppConfig.getServerUrl() + "/bs/equCheckMas/changeProcessStateByIds",
                        params,
                        new HttpCallBack() {
                            @Override
                            public void onBefore(Request request) {
                            }

                            @Override
                            public void requestSuccess(Object result) {
                                JSONObject json = JSON.parseObject(result.toString());//object转为jsonObject
                              
                                if (json.getString("message").equals("success")){
                                    ToastUtil.showToast(RepairActivity.this, "数据上传成功");
                                    //上传成功后刷新recycler
                                    getRepair(true);
                                    repairAdapter.notifyDataSetChanged();

                                }
                            }

                            @Override
                            public void authFailure() {
                                ToastUtil.showToast(RepairActivity.this,"身份认证失败,请重新登录!");
                            }

                            @Override
                            public void requestError(String msg) {
                                ToastUtil.showToast(RepairActivity.this,msg);
                             
                            }

                            @Override
                            public void requestFailure(Request request, IOException e) {
                                if (e.getMessage().equals("timeout")){
                                    ToastUtil.showToast(RepairActivity.this,"请求超时,请检查网络");
                                }
                                else{
                                    ToastUtil.showToast(RepairActivity.this,"请求失败,请检查网络配置");
                                }
                            }

                            @Override
                            public void onAfter() {}
                        }
                );
            }
            catch (Exception e) {
                e.printStackTrace();
            }
        }
        else {
            try {
                List<Parameter> params = new ArrayList<>();
                params.add(new Parameter("paramJson", paramJson.toJSONString()));
                SyncHttp syncHttp = new SyncHttp(this);
                syncHttp.httpPost(
                        AppConfig.getServerUrl() + "/bs/equCheckMas/changeProcessStateByIds",
                        params,
                        new HttpCallBack() {
                            @Override
                            public void onBefore(Request request) {
                            }

                            @Override
                            public void requestSuccess(Object result) {
                              
                                JSONObject json = JSON.parseObject(result.toString());//object转为jsonObject
                                if (json.getString("message").equals("success")){
                                    ToastUtil.showToast(RepairActivity.this, "数据上传成功");
                                    //上传成功后刷新recycler
                                    getRepair(true);
                                    repairAdapter.notifyDataSetChanged();
                                }
                            }

                            @Override
                            public void authFailure() {
                                ToastUtil.showToast(RepairActivity.this,"身份认证失败,请重新登录!");
                            }

                            @Override
                            public void requestError(String msg) {
                                ToastUtil.showToast(RepairActivity.this,msg);
                            }

                            @Override
                            public void requestFailure(Request request, IOException e) {
                                ToastUtil.showToast(RepairActivity.this,"请求超时,请检查网络");
                            }

                            @Override
                            public void onAfter() {
                            }
                        }
                );
            }
            catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

4.功能实现说明

(1)seeAbnormalActivity只有一条数据 下拉刷新上拉加载会加载重复数据 但刷新功能fresh需要

(2)fragment的nodata挪位置,开始在onResume的初始化里

 

 挪到数据绑定adapter里,这样数据没有,adapter显示nodata

 

(3) 受理详情页 受理成功一条 item不显示 位置显示空白 在检修完成按钮上传成功后 repairList.remove(当前位置的数据)

 

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值