/** * Name:普通卡密 * Time:2022-11-06 */public class AppNormalKmFragment extends BaseFragment { private View view; @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { view=inflater.inflate(R.layout.fragment_app_normal_km, container, false); initView(); return view; } private LinearLayout mLoadingStatus; private SmartRefreshLayout mSmart; private void initView() { mLoadingStatus = view.findViewById(R.id.loading_status); mSmart = view.findViewById(R.id.smart); mSmart.setRefreshHeader(new ClassicsHeader(requireActivity())); RecyclerView mList = view.findViewById(R.id.list); mList.setLayoutManager(new LinearLayoutManager(requireActivity(),LinearLayoutManager.VERTICAL,false)); mLoadingStatus.setVisibility(View.VISIBLE); adapter = new AppKmAdapter(getActivity(),null); adapter.getLoadMoreModule().setOnLoadMoreListener(() -> ListKmMethod(true)); mList.setAdapter(adapter); adapter.setEmptyView(R.layout.view_empty_km); // 没有内容则显示 adapter.setDiffCallback(new DiffUtil.ItemCallback() { @Override public boolean areItemsTheSame(@NonNull AppKmData oldItem, @NonNull AppKmData newItem) { return true; } @Override public boolean areContentsTheSame(@NonNull AppKmData oldItem, @NonNull AppKmData newItem) { if(!Objects.equals(oldItem.getAppKmValue(), newItem.getAppKmValue())){ return false; } else if (!Objects.equals(oldItem.getPrize(), newItem.getPrize())) { return false; } else return oldItem.isUsed() == newItem.isUsed(); } }); // 点击普通卡密列表 adapter.setOnItemClickListener((adapter, view, position) -> { AppKmData appKmData = (AppKmData) adapter.getItem(position); BottomSheetDialog pop = new BottomSheetDialog(requireActivity(), R.style.BottomSheetEdit); @SuppressLint("InflateParams") View activity = getLayoutInflater().inflate(R.layout.pop_app_normal_km_info, null, false); pop.setContentView(activity); pop.getWindow().findViewById(com.google.android.material.R.id.design_bottom_sheet).setBackgroundResource(android.R.color.transparent); pop.show(); }); ListKmMethod(false); // 下拉刷新事件 mSmart.setOnRefreshListener(refreshLayout -> { ListKmMethod(false); }); } private static final String TAG = "AppNormalKmFragment"; private AppKmAdapter adapter; private int page = 1; // 获取普通卡密方法 private void ListKmMethod(boolean isLoadMore) { List data = isLoadMore ? adapter.getData() : new ArrayList<>(); if(isLoadMore && data.size() < page*10){ adapter.getLoadMoreModule().loadMoreEnd(); } else { OkHttpUtils .post() .url(host + "/listKm") .addParams("appId", encrypt(appId)) .addParams("category",encrypt("0")) .addParams("page",encrypt(String.valueOf(isLoadMore ? ++page : page))) .addParams("all",encrypt(String.valueOf(!isLoadMore))) .addParams("sign", sign()) .build() .execute(new StringCallback() { @Override public void onError(Call call, Exception e, int id) { } @Override public void onResponse(String response, int id) { try { JSONObject allData = new JSONObject(Objects.requireNonNull(decrypt(response))); String log = "普通卡密列表:" + allData; Log.d(TAG, log); int code = allData.getInt("code"); if (code == CODE_OK) { // adapter.getLoadMoreModule().loadMoreComplete(); JSONArray jsonArray = allData.getJSONArray("result"); for(int i=0; iobject = jsonArray.getJSONObject(i); data.add(new AppKmData(object.getString("value"), object.getBoolean("isUsed"), object.getString("prize"))); } // 如果下拉刷新启用则关闭 if (mSmart.isRefreshing()) { mSmart.finishRefresh(); } // 如果加载布局显示则隐藏加载布局 if (mLoadingStatus.getVisibility() == View.VISIBLE) { mLoadingStatus.setVisibility(View.GONE); } if(data.size() >= page*10){ adapter.getLoadMoreModule().setEnableLoadMore(true); }else{ adapter.getLoadMoreModule().loadMoreEnd(); } adapter.setDiffNewData(data); } else { adapter.getLoadMoreModule().loadMoreFail(); String msg = allData.getString("msg"); showWarning(msg); } } catch (JSONException e) { e.printStackTrace(); } } }); } }}
以上为页面代码,后端没有问题,经测试在activity界面使用没有问题,在fragment界面使用如果数据大于20条就会出现加载一直转不显示内容问题,后端数据都已经可以打印出来,界面不实现加载,小于20条则无问题,可以正常实现加载,求解
你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答
本次提问扣除的有问必答次数,已经为您补发到账户,我们后续会持续优化,扩大我们的服务范围,为您带来更好地服务。