用户列表首次显示优化。

This commit is contained in:
2025-12-15 18:52:13 +08:00
parent 8dcafa37ba
commit e16878b0cf
11 changed files with 132 additions and 119 deletions

View File

@@ -29,6 +29,7 @@ import com.xscm.moduleutil.bean.room.RoomUserBean;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
@@ -47,18 +48,23 @@ public class RoomOnlineDialogFragment extends BaseMvpDialogFragment<RoomPresente
private RoomUserBean hostUser;
protected RoomInfoResp roomInfoResp;
private List<RoomOnlineBean> onlineBeanList = new ArrayList<>();
private RoomOnline mOnlineBean;
@Override
protected RoomPresenter bindPresenter() {
return new RoomPresenter(this, getActivity());
}
public static RoomOnlineDialogFragment show(String id, String pit_number, RoomUserBean hostUser, RoomInfoResp roomInfoResp, FragmentManager fragmentManager) {
public static RoomOnlineDialogFragment show(String id, String pit_number, RoomOnline mOnlineBean, RoomUserBean hostUser, RoomInfoResp roomInfoResp, FragmentManager fragmentManager) {
RoomOnlineDialogFragment dialogFragment = new RoomOnlineDialogFragment();
Bundle args = new Bundle();
args.putString("roomId", id); // 可选:传递参数
args.putString("pit_number", pit_number);
args.putSerializable("hostUser", hostUser); // 可选:传递参数
args.putSerializable("roomInfoResp", roomInfoResp);
args.putSerializable("mOnlineBean", mOnlineBean);
dialogFragment.setArguments(args);
dialogFragment.show(fragmentManager, "RoomOnlineDialogFragment");
return dialogFragment;
@@ -66,7 +72,7 @@ public class RoomOnlineDialogFragment extends BaseMvpDialogFragment<RoomPresente
@Override
protected void initData() {
MvpPre.getRoomOnline(getArguments().getString("roomId"), "1", "10");
// MvpPre.getRoomOnline(getArguments().getString("roomId"), "1", "10");
}
@Override
@@ -88,6 +94,7 @@ public class RoomOnlineDialogFragment extends BaseMvpDialogFragment<RoomPresente
super.onAttach(context);
roomId = getArguments().getString("roomId");
pit_number = getArguments().getString("pit_number");
mOnlineBean = (RoomOnline) getArguments().getSerializable("mOnlineBean");
hostUser = (RoomUserBean) getArguments().getSerializable("hostUser");
roomInfoResp = (RoomInfoResp) getArguments().getSerializable("roomInfoResp");
}
@@ -99,28 +106,30 @@ public class RoomOnlineDialogFragment extends BaseMvpDialogFragment<RoomPresente
@Override
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
// 添加延迟以避免过于频繁的请求
page++;
if (MvpPre != null && getArguments() != null) {
MvpPre.getRoomOnline(getArguments().getString("roomId"), page + "", "10");
} else {
refreshLayout.finishLoadMore(false);
}
page++;
if (MvpPre != null && getArguments() != null) {
MvpPre.getRoomOnline(getArguments().getString("roomId"), page + "", "10");
} else {
refreshLayout.finishLoadMore(false);
}
}
@Override
public void onRefresh(@NonNull RefreshLayout refreshLayout) {
page = 1;
if (MvpPre != null && getArguments() != null) {
MvpPre.getRoomOnline(getArguments().getString("roomId"), "1", "10");
} else {
refreshLayout.finishRefresh(false);
}
page = 1;
if (MvpPre != null && getArguments() != null) {
MvpPre.getRoomOnline(getArguments().getString("roomId"), "1", "10");
} else {
refreshLayout.finishRefresh(false);
}
}
});
List<RoomOnlineBean> roomOnlineBeanList = processOnlineData(mOnlineBean);
onlineBeanList.addAll(roomOnlineBeanList);
updateUserCount(mOnlineBean.getCount());
mBinding.rvComment.setLayoutManager(new LinearLayoutManager(getActivity()));
roomOnlineAdapter = new RoomOnlineAdapter(new ArrayList<RoomOnlineBean>());
roomOnlineAdapter = new RoomOnlineAdapter(onlineBeanList);
mBinding.rvComment.setAdapter(roomOnlineAdapter);
roomOnlineAdapter.setListener(new RoomOnlineAdapter.OnJoinButtonClickListener() {
@@ -216,41 +225,15 @@ public class RoomOnlineDialogFragment extends BaseMvpDialogFragment<RoomPresente
return;
}
getActivity().runOnUiThread(() -> {
finishRefreshOrLoad();
if (onlineBean == null) {
handleEmptyData();
return;
}
List<RoomOnlineBean> roomOnlineBeanList = processOnlineData(onlineBean);
updateAdapterData(roomOnlineBeanList);
updateUserCount(onlineBean.getCount());
});
List<RoomOnlineBean> roomOnlineBeanList = processOnlineData(onlineBean);
updateAdapterData(roomOnlineBeanList);
updateUserCount(onlineBean.getCount());
}
private boolean isValidContext() {
return getActivity() != null && mBinding != null;
}
private void finishRefreshOrLoad() {
if (mBinding.srl == null) return;
if (page <= 1) {
mBinding.srl.finishRefresh();
} else {
mBinding.srl.finishLoadMore();
}
}
private void handleEmptyData() {
if (page <= 1) {
roomOnlineAdapter.setNewData(new ArrayList<>());
} else if (mBinding.srl != null) {
mBinding.srl.finishLoadMoreWithNoMoreData();
}
}
private List<RoomOnlineBean> processOnlineData(RoomOnline onlineBean) {
List<RoomOnlineBean> result = new ArrayList<>();
@@ -296,13 +279,11 @@ public class RoomOnlineDialogFragment extends BaseMvpDialogFragment<RoomPresente
}
private void updateAdapterData(List<RoomOnlineBean> newData) {
if (page <= 1) {
roomOnlineAdapter.setNewData(newData);
} else if (!newData.isEmpty()) {
roomOnlineAdapter.addData(newData);
} else if (mBinding.srl != null) {
mBinding.srl.finishLoadMoreWithNoMoreData();
if (page == 1) {
onlineBeanList.clear();
}
onlineBeanList.addAll(newData);
roomOnlineAdapter.notifyDataSetChanged();
}
private void updateUserCount(int count) {
@@ -315,11 +296,7 @@ public class RoomOnlineDialogFragment extends BaseMvpDialogFragment<RoomPresente
}
}
// @Override
// public void getRoomOnline(List<RoomOnlineBean> onlineBean) {
// roomOnlineAdapter.setNewData(onlineBean);
// mBinding.tvNum.setText("在线用户("+onlineBean.size()+")人");
// }
@Override
public void onResume() {
super.onResume();