用户列表首次显示优化。
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user