用户列表首次显示优化。

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

@@ -1,11 +1,12 @@
package com.xscm.moduleutil.bean.room; package com.xscm.moduleutil.bean.room;
import java.io.Serializable;
import java.util.List; import java.util.List;
import lombok.Data; import lombok.Data;
@Data @Data
public class RoomOnline { public class RoomOnline implements Serializable {
private List<RoomOnlineBean> on_pit;//麦上用户 private List<RoomOnlineBean> on_pit;//麦上用户
private List<RoomOnlineBean> off_pit;//麦下用户 private List<RoomOnlineBean> off_pit;//麦下用户

View File

@@ -2,6 +2,7 @@ package com.xscm.moduleutil.bean.room;
import com.chad.library.adapter.base.entity.MultiItemEntity; import com.chad.library.adapter.base.entity.MultiItemEntity;
import java.io.Serializable;
import java.util.List; import java.util.List;
import lombok.Data; import lombok.Data;
@@ -12,7 +13,7 @@ import lombok.Data;
* @description: 房间在线列表 * @description: 房间在线列表
*/ */
@Data @Data
public class RoomOnlineBean implements MultiItemEntity { public class RoomOnlineBean implements MultiItemEntity, Serializable {
private int itemViewType; private int itemViewType;
private String typeNames; private String typeNames;
private int user_id; private int user_id;

View File

@@ -47,6 +47,7 @@ import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.fragment.app.DialogFragment import androidx.fragment.app.DialogFragment
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import com.alibaba.android.arouter.facade.annotation.Autowired import com.alibaba.android.arouter.facade.annotation.Autowired
import com.alibaba.android.arouter.facade.annotation.Route import com.alibaba.android.arouter.facade.annotation.Route
@@ -515,15 +516,10 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
mBinding?.roomTop?.userRecyclerView?.adapter = likeUserAdapter mBinding?.roomTop?.userRecyclerView?.adapter = likeUserAdapter
likeUserAdapter!!.onItemClickListener = likeUserAdapter!!.onItemClickListener =
BaseQuickAdapter.OnItemClickListener { adapter, view, position -> BaseQuickAdapter.OnItemClickListener { adapter, view, position ->
val fragment = RoomOnlineDialogFragment.show( showUserListDialog(
roomId, "", mRoomUserBean, mRoomInfoResp, roomId, "", mRoomUserBean, mRoomInfoResp,
supportFragmentManager supportFragmentManager
) )
LogUtils.e("fragment_onItemClickListener: ${(fragment != null)}")
if (fragment != null) {
addActiveDialogFragment(fragment) // 添加到管理列表
}
} }
mBinding!!.ivChat.setOnClickListener { view: View -> mBinding!!.ivChat.setOnClickListener { view: View ->
@@ -792,10 +788,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
// 调用退出房间方法 // 调用退出房间方法
MessageListenerSingleton.quitGroup(roomId); MessageListenerSingleton.quitGroup(roomId);
quit(); quit();
if (mRoomInfoResp?.room_info?.label_id != null && mRoomInfoResp?.room_info?.label_id.equals( if (mRoomInfoResp?.room_info?.label_id != null && mRoomInfoResp?.room_info?.label_id.equals("5")) {
"5"
)
) {
jiaR() jiaR()
return return
} else { } else {
@@ -1019,12 +1012,11 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
Observable.timer(1000, TimeUnit.MILLISECONDS).observeOn( Observable.timer(1000, TimeUnit.MILLISECONDS).observeOn(
AndroidSchedulers.mainThread() AndroidSchedulers.mainThread()
).subscribe { aLong: Long? -> ).subscribe { aLong: Long? ->
if (ActivityUtils.getTopActivity() is RoomActivity) startActivity( if (ActivityUtils.getTopActivity() is RoomActivity) {
Intent( startActivity(
ActivityUtils.getTopActivity(), Intent(ActivityUtils.getTopActivity(), TransparentActivity::class.java)
TransparentActivity::class.java
) )
) }
} }
} }
@@ -1532,7 +1524,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
roomFragment?.handleRoomMessage(messageEvent) roomFragment?.handleRoomMessage(messageEvent)
} else if (msgType == EMMessageInfo.QXRoomMessageTypeSignDelayText) { } else if (msgType == EMMessageInfo.QXRoomMessageTypeSignDelayText) {
roomFragment?.handleRoomMessage(messageEvent) roomFragment?.handleRoomMessage(messageEvent)
}else if (msgType == EMMessageInfo.QXRoomMessageTypeSignTipText) { } else if (msgType == EMMessageInfo.QXRoomMessageTypeSignTipText) {
roomFragment?.handleRoomMessage(messageEvent) roomFragment?.handleRoomMessage(messageEvent)
} }
} }
@@ -1938,11 +1930,13 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
roomFragment!!.upRoomInfoData(mRoomInfoResp) roomFragment!!.upRoomInfoData(mRoomInfoResp)
roomFragment?.handleRoomMessage(messageEvent) roomFragment?.handleRoomMessage(messageEvent)
} }
RoomType.SIGN_CONTRACT ->{
RoomType.SIGN_CONTRACT -> {
mRoomInfoResp?.room_info?.pit_list!![pitNumber.toInt() - 1] = RoomPitBean(pitNumber) mRoomInfoResp?.room_info?.pit_list!![pitNumber.toInt() - 1] = RoomPitBean(pitNumber)
roomFragment!!.upRoomInfoData(mRoomInfoResp) roomFragment!!.upRoomInfoData(mRoomInfoResp)
roomFragment?.handleRoomMessage(messageEvent) roomFragment?.handleRoomMessage(messageEvent)
} }
else -> { else -> {
roomFragment!!.updateSeatViewExchangedWithPitArray(mRoomInfoResp) roomFragment!!.updateSeatViewExchangedWithPitArray(mRoomInfoResp)
} }
@@ -2015,8 +2009,8 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
LogUtils.e("1020_mRoomBean", mRoomInfoResp?.room_info.toString()) LogUtils.e("1020_mRoomBean", mRoomInfoResp?.room_info.toString())
EventBus.getDefault().post(mRoomInfoResp?.room_info) EventBus.getDefault().post(mRoomInfoResp?.room_info)
changeBackgroundColor(mRoomInfoResp?.room_info?.room_background) changeBackgroundColor(mRoomInfoResp?.room_info?.room_background)
ImageUtils.loadHeadCC( mRoomInfoResp?.room_info?.room_cover, mBinding!!.roomTop.avatar) ImageUtils.loadHeadCC(mRoomInfoResp?.room_info?.room_cover, mBinding!!.roomTop.avatar)
mBinding?.roomTop?.name?.text= mRoomInfoResp?.room_info?.room_name mBinding?.roomTop?.name?.text = mRoomInfoResp?.room_info?.room_name
} }
private fun handleMsgType1011(messageEvent: RoomMessageEvent, text: T?) { private fun handleMsgType1011(messageEvent: RoomMessageEvent, text: T?) {
@@ -2635,13 +2629,10 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
} else if (id == R.id.btn_close_live) { //退出房间 } else if (id == R.id.btn_close_live) { //退出房间
showExitRoomDialog() showExitRoomDialog()
} else if (id == R.id.tv_num) { } else if (id == R.id.tv_num) {
val fragment = RoomOnlineDialogFragment.show( showUserListDialog(
roomId, "", mRoomUserBean, mRoomInfoResp, roomId, "", mRoomUserBean, mRoomInfoResp,
supportFragmentManager supportFragmentManager
) )
if (fragment != null) {
addActiveDialogFragment(fragment) // 添加到管理列表
}
} else if (id == R.id.rl) { } else if (id == R.id.rl) {
MvpPre!!.clearUserCharm(roomId, "") MvpPre!!.clearUserCharm(roomId, "")
} else if (id == R.id.ll_input) { } else if (id == R.id.ll_input) {
@@ -3392,7 +3383,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
// ) // )
// MessageListenerSingleton.getInstance() // MessageListenerSingleton.getInstance()
// .joinGroup(mRoomInfoResp?.room_info?.head_line?.room_id) // .joinGroup(mRoomInfoResp?.room_info?.head_line?.room_id)
roomId2=mRoomInfoResp?.room_info?.head_line?.room_id roomId2 = mRoomInfoResp?.room_info?.head_line?.room_id
getHour() getHour()
MvpPre?.getRoomIn(mRoomInfoResp?.room_info?.head_line?.room_id, "") MvpPre?.getRoomIn(mRoomInfoResp?.room_info?.head_line?.room_id, "")
} else { } else {
@@ -3793,7 +3784,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
} }
fun refreshRoomInfo(roomId: String) { fun refreshRoomInfo(roomId: String) {
roomId2=roomId roomId2 = roomId
getHour() getHour()
MvpPre?.getRoomIn(roomId, "") MvpPre?.getRoomIn(roomId, "")
} }
@@ -3903,10 +3894,11 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
} }
return result return result
} }
var mOnlineBean: RoomOnline? = null
// TODO: 根据返回的在线列表获取对应的值,查看是否有在线用户 // TODO: 根据返回的在线列表获取对应的值,查看是否有在线用户
override fun getRoomOnline(onlineBean: RoomOnline?) { override fun getRoomOnline(onlineBean: RoomOnline?) {
if (onlineBean != null) { if (onlineBean != null) {
mOnlineBean = onlineBean
val onlineBeans: MutableList<RoomOnlineBean> = ArrayList() val onlineBeans: MutableList<RoomOnlineBean> = ArrayList()
if (onlineBean.on_pit.size > 0) { if (onlineBean.on_pit.size > 0) {
onlineBeans.addAll(onlineBean.on_pit) onlineBeans.addAll(onlineBean.on_pit)
@@ -3923,6 +3915,25 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
} }
} }
fun showUserListDialog(
roomId: String?,
pitNumber: String?,
mRoomUserBean: RoomUserBean?,
mRoomInfoResp: RoomInfoResp?,
supportFragmentManager: FragmentManager
) {
val fragment = RoomOnlineDialogFragment.show(
roomId, pitNumber,mOnlineBean, mRoomUserBean, mRoomInfoResp,
supportFragmentManager
)
LogUtils.e("fragment_onItemClickListener: ${(fragment != null)}")
if (fragment != null) {
addActiveDialogFragment(fragment) // 添加到管理列表
}
}
override fun applyPit() { override fun applyPit() {
} }

View File

@@ -82,6 +82,7 @@ public class FriendshipRoomFragment extends BaseRoomFragment<FriendshipRoomPrese
public void applyPit() { public void applyPit() {
} }
public FriendshipRoomFragment() { public FriendshipRoomFragment() {
} }
@@ -93,6 +94,7 @@ public class FriendshipRoomFragment extends BaseRoomFragment<FriendshipRoomPrese
FriendshipRoomFragment fragment = new FriendshipRoomFragment(roomInfoResp); FriendshipRoomFragment fragment = new FriendshipRoomFragment(roomInfoResp);
return fragment; return fragment;
} }
@Override @Override
public void endFriend(FriendUserBean friendUserBean) { public void endFriend(FriendUserBean friendUserBean) {
if (friendUserBean != null) { if (friendUserBean != null) {
@@ -162,9 +164,6 @@ public class FriendshipRoomFragment extends BaseRoomFragment<FriendshipRoomPrese
} }
@Override @Override
protected FriendshipRoomPresenter bindPresenter() { protected FriendshipRoomPresenter bindPresenter() {
return new FriendshipRoomPresenter(this, getActivity()); return new FriendshipRoomPresenter(this, getActivity());
@@ -239,7 +238,7 @@ public class FriendshipRoomFragment extends BaseRoomFragment<FriendshipRoomPrese
initPopupWindow(); initPopupWindow();
roomId = roomInfoResp.getRoom_info().getRoom_id(); roomId = roomInfoResp.getRoom_info().getRoom_id();
for (int i = 0; i < roomInfoResp.getRoom_info().getPit_list().size(); i++) { for (int i = 0; i < roomInfoResp.getRoom_info().getPit_list().size(); i++) {
RoomPitBean roomPitBean = roomInfoResp.getRoom_info().getPit_list().get(i); RoomPitBean roomPitBean = roomInfoResp.getRoom_info().getPit_list().get(i);
if (i == 6 || i == 7) { if (i == 6 || i == 7) {
@@ -364,7 +363,7 @@ public class FriendshipRoomFragment extends BaseRoomFragment<FriendshipRoomPrese
if (((RoomActivity) getActivity()).isFastDoubleClick(roomInfoResp.getUser_info().getUser_id() + "", pitBean.getPit_number())) { if (((RoomActivity) getActivity()).isFastDoubleClick(roomInfoResp.getUser_info().getUser_id() + "", pitBean.getPit_number())) {
return; return;
} }
RoomOnlineDialogFragment.show(roomId, "10", roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager()); ((RoomActivity) getActivity()).showUserListDialog(roomId, "10", roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager());
} else { } else {
com.hjq.toast.ToastUtils.show("请等待主持抱麦"); com.hjq.toast.ToastUtils.show("请等待主持抱麦");
} }
@@ -505,7 +504,7 @@ public class FriendshipRoomFragment extends BaseRoomFragment<FriendshipRoomPrese
continue; continue;
RoomPitBean roomPitBean = roomInfoResp.getRoom_info().getPit_list().get(i); RoomPitBean roomPitBean = roomInfoResp.getRoom_info().getPit_list().get(i);
if (roomPitBean.getUser_id() == null || roomPitBean.getUser_id().isEmpty()){ if (roomPitBean.getUser_id() == null || roomPitBean.getUser_id().isEmpty()) {
continue; continue;
} }
@@ -713,7 +712,9 @@ public class FriendshipRoomFragment extends BaseRoomFragment<FriendshipRoomPrese
tvHugMic.setOnClickListener(v -> { tvHugMic.setOnClickListener(v -> {
// 处理抱麦逻辑 // 处理抱麦逻辑
RoomOnlineDialogFragment.show(roomId, pitNumber, roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager()); if (getActivity() != null && getActivity() instanceof RoomActivity) {
((RoomActivity) getActivity()).showUserListDialog(roomId, pitNumber, roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager());
}
popupWindow.dismiss(); popupWindow.dismiss();
}); });
} }

View File

@@ -406,7 +406,9 @@ public class RoomAuctionFragment extends BaseMvpFragment<RoomAuctionPresenterTow
if (wheatView2.getUserId() != null) { if (wheatView2.getUserId() != null) {
if (wheatView2.getUserId().equals("")) { if (wheatView2.getUserId().equals("")) {
if ((wheatView.getUserId() != null && wheatView.getUserId().equals(SpUtil.getUserId() + "") || getHostUser() < 4)) { if ((wheatView.getUserId() != null && wheatView.getUserId().equals(SpUtil.getUserId() + "") || getHostUser() < 4)) {
RoomOnlineDialogFragment.show(roomInfoResp.getRoom_info().getRoom_id(), 888 + "", roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager()); if (getActivity() != null && getActivity() instanceof RoomActivity) {
((RoomActivity)getActivity()).showUserListDialog(roomInfoResp.getRoom_info().getRoom_id(), 888 + "", roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager());
}
} }
} else { } else {
if (roomInfoResp.getRoom_auction() != null && roomInfoResp.getRoom_auction().getAuction_user() != null) { if (roomInfoResp.getRoom_auction() != null && roomInfoResp.getRoom_auction().getAuction_user() != null) {

View File

@@ -141,10 +141,12 @@ public class RoomJukeboxFragment extends BaseMvpFragment<JukeboxPresenter, Fragm
roomPitBean = pitBean; roomPitBean = pitBean;
showPopupMenu(roomJukeboxWheatView); // v 是点击的按钮视图 showPopupMenu(roomJukeboxWheatView); // v 是点击的按钮视图
} else if ((finalI + 1) == 10) { } else if ((finalI + 1) == 10) {
if (ActivityUtils.getTopActivity() instanceof RoomActivity) { if (getActivity() instanceof RoomActivity) {
if (((RoomActivity) ActivityUtils.getTopActivity()).getHostUser() < 4) { if (((RoomActivity) ActivityUtils.getTopActivity()).getHostUser() < 4) {
if (!isFastDoubleClick("online_dialog", finalI + 1 + "")) { if (!isFastDoubleClick("online_dialog", finalI + 1 + "")) {
RoomOnlineDialogFragment.show(roomId, finalI + 1 + "", roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager()); if (getActivity() != null && getActivity() instanceof RoomActivity) {
((RoomActivity)getActivity()).showUserListDialog(roomId, finalI + 1 + "", roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager());
}
} }
} else { } else {
com.hjq.toast.ToastUtils.show("请等待主持抱麦"); com.hjq.toast.ToastUtils.show("请等待主持抱麦");
@@ -336,7 +338,9 @@ public class RoomJukeboxFragment extends BaseMvpFragment<JukeboxPresenter, Fragm
tvHugMic.setOnClickListener(v -> { tvHugMic.setOnClickListener(v -> {
// 处理抱麦逻辑 // 处理抱麦逻辑
RoomOnlineDialogFragment.show(roomId, pitNumber, roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager()); if (getActivity() != null && getActivity() instanceof RoomActivity) {
((RoomActivity) getActivity()).showUserListDialog(roomId, pitNumber, roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager());
}
popupWindow.dismiss(); popupWindow.dismiss();
}); });
} }

View File

@@ -432,8 +432,8 @@ public class RoomKtvFragment extends BaseMvpFragment<RoomPresenter, FragmentRoom
RoomUserInfoFragment.show(roomInfoResp.getRoom_info().getRoom_id(), muJb.getUserId(), muJb.pitNumber, getHostUser(), false, 2, isNumberWhether(), getChildFragmentManager()); RoomUserInfoFragment.show(roomInfoResp.getRoom_info().getRoom_id(), muJb.getUserId(), muJb.pitNumber, getHostUser(), false, 2, isNumberWhether(), getChildFragmentManager());
} else { } else {
if (getActivity() != null && getActivity() instanceof RoomActivity) { if (getActivity() != null && getActivity() instanceof RoomActivity) {
if (((RoomActivity) getActivity()).getHostUser() < 4) { if (getActivity() != null && ((RoomActivity) getActivity()).getHostUser() < 4) {
RoomOnlineDialogFragment.show(roomInfoResp.getRoom_info().getRoom_id(), "10", roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager()); ((RoomActivity)getActivity()).showUserListDialog(roomInfoResp.getRoom_info().getRoom_id(), "10", roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager());
} else { } else {
com.hjq.toast.ToastUtils.show("请等待主持抱麦"); com.hjq.toast.ToastUtils.show("请等待主持抱麦");
} }

View File

@@ -11,6 +11,7 @@ import android.widget.TextView
import com.blankj.utilcode.util.ActivityUtils import com.blankj.utilcode.util.ActivityUtils
import com.blankj.utilcode.util.LogUtils import com.blankj.utilcode.util.LogUtils
import com.xscm.modulemain.R import com.xscm.modulemain.R
import com.xscm.modulemain.activity.room.activity.RoomActivity
import com.xscm.modulemain.activity.room.contacts.MentorShipContacts import com.xscm.modulemain.activity.room.contacts.MentorShipContacts
import com.xscm.modulemain.activity.room.presenter.MentorShipPresenter import com.xscm.modulemain.activity.room.presenter.MentorShipPresenter
import com.xscm.modulemain.databinding.FragmentMentorShipBinding import com.xscm.modulemain.databinding.FragmentMentorShipBinding
@@ -82,7 +83,7 @@ class RoomMentorShipFragment(var mRoomInfoResp: RoomInfoResp?) :
private var signTypeDialog: DialogSignType? = null private var signTypeDialog: DialogSignType? = null
private var disposable:Disposable? = null private var disposable: Disposable? = null
private val ivForMai = arrayOf( private val ivForMai = arrayOf(
@@ -168,7 +169,7 @@ class RoomMentorShipFragment(var mRoomInfoResp: RoomInfoResp?) :
mRoomInfoResp?.room_info?.pit_list!![indexList[idx].toInt() - 1] mRoomInfoResp?.room_info?.pit_list!![indexList[idx].toInt() - 1]
// 处理抱麦逻辑 // 处理抱麦逻辑
RoomOnlineDialogFragment.show( (activity as RoomActivity).showUserListDialog(
mRoomId, mRoomId,
mPitBean?.pit_number, mPitBean?.pit_number,
mRoomInfoResp?.user_info, mRoomInfoResp?.user_info,
@@ -285,7 +286,7 @@ class RoomMentorShipFragment(var mRoomInfoResp: RoomInfoResp?) :
mBinding.tvTimeRight.visibility = View.GONE mBinding.tvTimeRight.visibility = View.GONE
mBinding.tvTime.visibility = View.GONE mBinding.tvTime.visibility = View.GONE
mBinding.tvJsq.visibility= View.GONE mBinding.tvJsq.visibility = View.GONE
mBinding.tvTimeLeft.visibility = View.GONE mBinding.tvTimeLeft.visibility = View.GONE
@@ -300,7 +301,10 @@ class RoomMentorShipFragment(var mRoomInfoResp: RoomInfoResp?) :
setIvForMai(0) setIvForMai(0)
} }
if (viewList[0].pitBean.user_id.equals(mUserInfo?.user_id.toString()) && !mSignPitBean?.user_id.equals("0")) { if (viewList[0].pitBean.user_id.equals(mUserInfo?.user_id.toString()) && !mSignPitBean?.user_id.equals(
"0"
)
) {
mBinding.tvTimeLeft.visibility = View.VISIBLE mBinding.tvTimeLeft.visibility = View.VISIBLE
} else { } else {
mBinding.tvTimeLeft.visibility = View.GONE mBinding.tvTimeLeft.visibility = View.GONE
@@ -321,6 +325,7 @@ class RoomMentorShipFragment(var mRoomInfoResp: RoomInfoResp?) :
"\n mBinding.tvTimeLeft: ${mBinding.tvTimeLeft.visibility == View.VISIBLE}" "\n mBinding.tvTimeLeft: ${mBinding.tvTimeLeft.visibility == View.VISIBLE}"
) )
} }
// 核心工具方法:检查 Fragment 是否和 Activity 有效绑定 // 核心工具方法:检查 Fragment 是否和 Activity 有效绑定
private fun checkFragmentAttached(): Boolean { private fun checkFragmentAttached(): Boolean {
// 依次检查Fragment 是否附加到 Activity、是否已销毁、是否处于正常状态 // 依次检查Fragment 是否附加到 Activity、是否已销毁、是否处于正常状态
@@ -485,15 +490,15 @@ class RoomMentorShipFragment(var mRoomInfoResp: RoomInfoResp?) :
// 观察时间变化 // 观察时间变化
scope.launch { scope.launch {
timer.timeLeft.collect { time -> timer.timeLeft.collect { time ->
LogUtils.e("startTimer:"+time) LogUtils.e("startTimer:" + time)
if (time/1000 <= 10){ if (time / 1000 <= 10) {
mBinding.tvJsq.visibility= View.VISIBLE mBinding.tvJsq.visibility = View.VISIBLE
mBinding.tvJsq.text = (time/1000).toString() mBinding.tvJsq.text = (time / 1000).toString()
if ((time/1000).toInt() <= 0){ if ((time / 1000).toInt() <= 0) {
mBinding.tvJsq.visibility= View.GONE mBinding.tvJsq.visibility = View.GONE
} }
}else{ } else {
mBinding.tvJsq.visibility= View.GONE mBinding.tvJsq.visibility = View.GONE
} }
val formattedTime = timer.formatTime(time) val formattedTime = timer.formatTime(time)
// 更新UI显示 // 更新UI显示
@@ -645,8 +650,11 @@ class RoomMentorShipFragment(var mRoomInfoResp: RoomInfoResp?) :
tvHugMic.setOnClickListener { v: View? -> tvHugMic.setOnClickListener { v: View? ->
// 处理抱麦逻辑 // 处理抱麦逻辑
RoomOnlineDialogFragment.show( (activity as RoomActivity).showUserListDialog(
mRoomId, mPitBean?.pit_number, mRoomInfoResp?.user_info, mRoomInfoResp, mRoomId,
mPitBean?.pit_number,
mRoomInfoResp?.user_info,
mRoomInfoResp,
childFragmentManager childFragmentManager
) )
popupWindow!!.dismiss() popupWindow!!.dismiss()

View File

@@ -184,9 +184,9 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
showPopupMenu(view); // v 是点击的按钮视图 showPopupMenu(view); // v 是点击的按钮视图
} else if (pitNumber1 == 10) { } else if (pitNumber1 == 10) {
if (getActivity() != null && getActivity() instanceof RoomActivity){ if (getActivity() != null && getActivity() instanceof RoomActivity){
if (((RoomActivity) getActivity()).getHostUser() < 4){ if (getActivity() != null && ((RoomActivity) getActivity()).getHostUser() < 4){
if (!isFastDoubleClick("online_dialog", pitNumber1 + "")) { if (!isFastDoubleClick("online_dialog", pitNumber1 + "")) {
RoomOnlineDialogFragment.show(roomId, pitNumber1 + "", roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager()); ((RoomActivity)getActivity()).showUserListDialog(roomId, pitNumber1 + "", roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager());
} }
}else { }else {
com.hjq.toast.ToastUtils.show("请等待主持抱麦"); com.hjq.toast.ToastUtils.show("请等待主持抱麦");
@@ -338,7 +338,9 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
tvHugMic.setOnClickListener(v -> { tvHugMic.setOnClickListener(v -> {
// 处理抱麦逻辑 // 处理抱麦逻辑
RoomOnlineDialogFragment.show(roomId, pitNumber, roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager()); if(getActivity() != null && getActivity() instanceof RoomActivity) {
((RoomActivity) getActivity()).showUserListDialog(roomId, pitNumber, roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager());
}
popupWindow.dismiss(); popupWindow.dismiss();
}); });
} }
@@ -713,7 +715,9 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
} else if (pitNumber1 == 10) { } else if (pitNumber1 == 10) {
// 添加防重复点击检查 // 添加防重复点击检查
if (!isFastDoubleClick("online_dialog", pitNumber1 + "")) { if (!isFastDoubleClick("online_dialog", pitNumber1 + "")) {
RoomOnlineDialogFragment.show(roomId, pitNumber1 + "", roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager()); if (getActivity() != null && getActivity() instanceof RoomActivity) {
((RoomActivity) getActivity()).showUserListDialog(roomId, pitNumber1 + "", roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager());
}
} }
} else { } else {
MvpPre.applyPit(roomId, pitNumber1 + ""); MvpPre.applyPit(roomId, pitNumber1 + "");
@@ -782,7 +786,9 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
} else if (pitNumber1 == 10) { } else if (pitNumber1 == 10) {
// 添加防重复点击检查 // 添加防重复点击检查
if (!isFastDoubleClick("online_dialog", pitNumber1 + "")) { if (!isFastDoubleClick("online_dialog", pitNumber1 + "")) {
RoomOnlineDialogFragment.show(roomId, pitNumber1 + "", roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager()); if (getActivity() != null && getActivity() instanceof RoomActivity) {
((RoomActivity) getActivity()).showUserListDialog(roomId, pitNumber1 + "", roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager());
}
} }
} else { } else {
MvpPre.applyPit(roomId, pitNumber1 + ""); MvpPre.applyPit(roomId, pitNumber1 + "");

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

View File

@@ -75,7 +75,7 @@
android:id="@+id/tv_performer_name" android:id="@+id/tv_performer_name"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_3" android:layout_marginTop="-15dp"
android:text="请点歌" android:text="请点歌"
android:textColor="@color/colorWhite45" android:textColor="@color/colorWhite45"
android:textSize="@dimen/sp_12" android:textSize="@dimen/sp_12"
@@ -210,7 +210,7 @@
<TextView <TextView
android:id="@+id/tv_song" android:id="@+id/tv_song"
android:layout_width="0dp" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/dp_36" android:layout_marginHorizontal="@dimen/dp_36"
android:layout_marginTop="-15dp" android:layout_marginTop="-15dp"
@@ -223,7 +223,9 @@
app:layout_constraintEnd_toEndOf="@+id/im_performer" app:layout_constraintEnd_toEndOf="@+id/im_performer"
app:layout_constraintStart_toStartOf="@+id/im_performer" app:layout_constraintStart_toStartOf="@+id/im_performer"
app:layout_constraintTop_toBottomOf="@+id/im_performer" app:layout_constraintTop_toBottomOf="@+id/im_performer"
tools:text="演唱歌曲:我的好兄弟" /> android:lines="1"
android:ellipsize="end"
tools:text="演唱歌曲:我的好兄弟我的好兄弟我的好兄弟我的好兄弟我的好兄弟我的好兄弟" />
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_jukebox" android:id="@+id/rv_jukebox"