package com.dayu.pipirrapp.activity; import android.content.Intent; import android.os.Bundle; import android.view.LayoutInflater; import androidx.activity.result.ActivityResult; import androidx.activity.result.ActivityResultCallback; import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.contract.ActivityResultContracts; import androidx.annotation.Nullable; import androidx.recyclerview.widget.LinearLayoutManager; import com.dayu.pipirrapp.MyApplication; import com.dayu.pipirrapp.adapter.IssueAdapter; import com.dayu.pipirrapp.bean.net.IssueListResult; import com.dayu.pipirrapp.bean.net.IssueResult; import com.dayu.pipirrapp.databinding.ActivityIssueListBinding; import com.dayu.pipirrapp.net.ApiManager; import com.dayu.pipirrapp.net.BaseResponse; import com.dayu.pipirrapp.net.Constants; import com.dayu.pipirrapp.net.subscribers.SubscriberListener; import com.dayu.pipirrapp.utils.ToastUtil; import com.dayu.pipirrapp.view.TitleBar; import com.scwang.smart.refresh.footer.ClassicsFooter; import com.scwang.smart.refresh.header.ClassicsHeader; import com.scwang.smart.refresh.layout.api.RefreshLayout; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * IssueListActivity - * * @author zuoxiao * @version 1.0 * @since 2024-12-10 */ public class IssueListActivity extends BaseActivity { public static final int RESULT_REFRESH = 1001; ActivityIssueListBinding binding; RefreshLayout myRefreshLayout; List recordsList = new ArrayList<>(); IssueAdapter mAdapter; private final ActivityResultLauncher activityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback() { @Override public void onActivityResult(ActivityResult result) { if (result.getResultCode() == RESULT_REFRESH) { myRefreshLayout.autoRefresh(); } } }); @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); binding = ActivityIssueListBinding.inflate(LayoutInflater.from(this)); setContentView(binding.getRoot()); initView(); getData(true); } private void initView() { new TitleBar(this).setTitleText("问题列表").setLeftIco().setLeftIcoListening(v -> IssueListActivity.this.finish()); myRefreshLayout = (RefreshLayout) binding.refreshLayout; myRefreshLayout.setRefreshHeader(new ClassicsHeader(this)); myRefreshLayout.setRefreshFooter(new ClassicsFooter(this)); myRefreshLayout.setOnRefreshListener(refreshlayout -> { // refreshlayout.finishRefresh(2000/*,false*/);//传入false表示刷新失败 recordsList.clear(); page = 0; getData(true); }); myRefreshLayout.setOnLoadMoreListener(refreshlayout -> { page = page + 1; getData(false); }); mAdapter = new IssueAdapter(this, recordsList); LinearLayoutManager layoutManager = new LinearLayoutManager(this); binding.recyclerView.setLayoutManager(layoutManager); binding.recyclerView.setAdapter(mAdapter); } private void getData(boolean isRefresh) { Map params = new HashMap<>(); if (isRefresh) { page = 1; recordsList.clear(); } params.put("pageSize", pageSize); params.put("pageCurr", page); params.put("inspectorId", MyApplication.myApplication.userId); ApiManager.getInstance().requestGetHideLoading(this, Constants.BASE_URL + "/app/issue/getIssueReports", IssueListResult.class, params, new SubscriberListener>() { @Override public void onNext(BaseResponse t) { if (t.isSuccess()) { if (t.isSuccess()) { if (t.getContent().getObj() != null && t.getContent().getObj().size() > 0) { recordsList.addAll(t.getContent().getObj()); if (t.getContent().getPageTotal() == page) { myRefreshLayout.finishLoadMoreWithNoMoreData(); } } else { myRefreshLayout.finishLoadMoreWithNoMoreData(); } } } else { ToastUtil.showToast(IssueListActivity.this, t.getMsg()); } } @Override public void onCloose() { super.onCloose(); layoutFinish(myRefreshLayout, isRefresh); mAdapter.notifyDataSetChanged(); } }); } public void startDetail(String issueReportId) { Intent intent = new Intent(IssueListActivity.this, IssueDetailActivity.class); intent.putExtra("issueReportId", issueReportId); activityResultLauncher.launch(intent); } }