diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/room/activity/RoomActivity.kt b/MainModule/src/main/java/com/xscm/modulemain/activity/room/activity/RoomActivity.kt index 2fbb1664..06423726 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/room/activity/RoomActivity.kt +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/room/activity/RoomActivity.kt @@ -32,13 +32,10 @@ import android.view.KeyEvent import android.view.LayoutInflater import android.view.MotionEvent import android.view.View -import android.view.View.GONE import android.view.ViewGroup import android.view.WindowManager import android.view.animation.AccelerateInterpolator -import android.view.animation.Animation import android.view.animation.DecelerateInterpolator -import android.view.animation.TranslateAnimation import android.view.inputmethod.InputMethodManager import android.widget.Button import android.widget.EditText @@ -55,7 +52,6 @@ import com.alibaba.android.arouter.facade.annotation.Autowired import com.alibaba.android.arouter.facade.annotation.Route import com.alibaba.android.arouter.launcher.ARouter import com.blankj.utilcode.util.ActivityUtils -import com.blankj.utilcode.util.FileUtils import com.blankj.utilcode.util.GsonUtils import com.blankj.utilcode.util.LogUtils import com.blankj.utilcode.util.ThreadUtils @@ -71,9 +67,6 @@ import com.tencent.imsdk.v2.V2TIMManager import com.tencent.imsdk.v2.V2TIMSDKListener import com.tencent.imsdk.v2.V2TIMUserFullInfo import com.tencent.imsdk.v2.V2TIMValueCallback -import com.tencent.qgame.animplayer.AnimConfig -import com.tencent.qgame.animplayer.AnimView -import com.tencent.qgame.animplayer.inter.IAnimListener import com.xscm.modulemain.BaseMvpActivity import com.xscm.modulemain.R import com.xscm.modulemain.activity.main.activity.MainActivity @@ -112,7 +105,6 @@ import com.xscm.moduleutil.adapter.LikeUserAdapter import com.xscm.moduleutil.base.AppStateListener import com.xscm.moduleutil.base.AppStateManager import com.xscm.moduleutil.base.CommonAppContext -import com.xscm.moduleutil.base.CommonAppContext.post import com.xscm.moduleutil.bean.GiftBean import com.xscm.moduleutil.bean.HeadlineBean import com.xscm.moduleutil.bean.MqttXlhEnd @@ -177,7 +169,6 @@ import com.xscm.moduleutil.utils.SystemUtils import com.xscm.moduleutil.utils.roomview.GiftDisplayManager import com.xscm.moduleutil.widget.CircularProgressView import com.xscm.moduleutil.widget.CustomMusicFloatingView -import com.xscm.moduleutil.widget.GiftAnimView import com.xscm.moduleutil.widget.QXGiftPlayerManager import com.xscm.moduleutil.widget.RoomKtvWheatView import com.xscm.moduleutil.widget.SilentCountDownTimer @@ -189,20 +180,12 @@ import io.reactivex.Observable import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.Disposable import io.reactivex.schedulers.Schedulers -import okhttp3.Call -import okhttp3.Callback -import okhttp3.OkHttpClient -import okhttp3.Request -import okhttp3.Response import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode import pub.devrel.easypermissions.AppSettingsDialog import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -import java.io.File -import java.io.FileOutputStream -import java.io.IOException import java.lang.ref.WeakReference import java.nio.charset.StandardCharsets import java.util.Arrays @@ -1500,10 +1483,11 @@ class RoomActivity : BaseMvpActivity(), qxRedPacketManager!!.addRedPacket(messageEvent.text.redpacketInfo) } else if (msgType == EMMessageInfo.QXRoomMessageTypeQXRoomMessageRedRemove) { qxRedPacketManager!!.removeRedPacket(messageEvent.text.redpacket_id) - } else if (msgType == EMMessageInfo.QXRoomMessageTypeSongerNum //房间点歌数量变化 - || msgType == EMMessageInfo.QXRoomMessageTypeSingerRoomCurrentSongDidChanged //点歌房当前歌曲发生变化 - || msgType == EMMessageInfo.QXRoomMessageTypeSingerRoomNextSongDidChanged - ) { //点歌房下一首歌曲发生变化 + } else if (msgType == EMMessageInfo.QXRoomMessageTypeSongerNum|| //房间点歌数量变化 + msgType == EMMessageInfo.QXRoomMessageTypeSingerRoomNextSongDidChanged) //点歌房下一首歌曲发生变化 + { + roomFragment!!.handleRoomMessage(messageEvent) + }else if( msgType == EMMessageInfo.QXRoomMessageTypeSingerRoomCurrentSongDidChanged){ //点歌房当前歌曲发生变化) if (mRoomInfoResp != null && mRoomInfoResp!!.room_info != null) { if(messageEvent?.text?.song_info!=null){ mRoomInfoResp?.singer_info?.song_info = messageEvent.text.song_info @@ -1513,7 +1497,8 @@ class RoomActivity : BaseMvpActivity(), roomFragment?.upRoomInfo(mRoomInfoResp) roomFragment!!.handleRoomMessage(messageEvent) } - } else if (msgType == EMMessageInfo.QXRoomMessageTypeCPText) { + } + else if (msgType == EMMessageInfo.QXRoomMessageTypeCPText) { LogUtils.e("CPText", messageEvent.text.rights_icon) if (messageEvent.text.rights_icon.isNotEmpty()) { QXGiftPlayerManager.getInstance(this).displayCPView( diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/room/adapter/RoomJukeboxAdapter.java b/MainModule/src/main/java/com/xscm/modulemain/activity/room/adapter/RoomJukeboxAdapter.java index 81722237..fa182bf2 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/room/adapter/RoomJukeboxAdapter.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/room/adapter/RoomJukeboxAdapter.java @@ -28,7 +28,7 @@ public class RoomJukeboxAdapter extends BaseQuickAdapter { notifyDataSetChanged(); } + public void addSongList(List songList) { + if (songList != null) { + this.songList.addAll(songList); + notifyDataSetChanged(); + } + } + + public void clearSongList() { + this.songList.clear(); + notifyDataSetChanged(); + } + public void setOnSongClickListener(OnSongClickListener listener) { this.onSongClickListener = listener; } diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomJukeboxFragment.java b/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomJukeboxFragment.java index e5e084d6..26f7035e 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomJukeboxFragment.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomJukeboxFragment.java @@ -39,6 +39,7 @@ import com.xscm.moduleutil.utils.SpUtil; import com.xscm.moduleutil.widget.RoomFriendshipWheatView; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; /** @@ -60,6 +61,8 @@ public class RoomJukeboxFragment extends BaseMvpFragment roomPitBeans = new ArrayList<>(); + public RoomJukeboxFragment() { // Required empty public constructor } @@ -370,11 +373,11 @@ public class RoomJukeboxFragment extends BaseMvpFragment roomPitBeans = new ArrayList<>(); + for (int i = 0; i < roomInfoResp.getRoom_info().getPit_list().size(); i++) { RoomPitBean roomPitBean = roomInfoResp.getRoom_info().getPit_list().get(i); @@ -497,6 +500,11 @@ public class RoomJukeboxFragment extends BaseMvpFragment dataList = new ArrayList<>(adapter.getData()); + int fromIndex = Integer.parseInt(fromPit) - 1; int toIndex = Integer.parseInt(toPit) - 1; - if (toIndex > adapter.getData().size() - 1) { - UserInfo fromUserInfo = event.getText().getFromUserInfo(); - pitNumber = toPit; - RoomPitBean pitBean = new RoomPitBean(); - pitBean.setPit_number(pitNumber); - pitBean.setUser_id(fromUserInfo.getUser_id() + ""); - pitBean.setAvatar(fromUserInfo.getAvatar()); - pitBean.setNickname(fromUserInfo.getNickname()); - pitBean.setSex(fromUserInfo.getSex() + ""); - pitBean.setCharm(fromUserInfo.getCharm()); - pitBean.setDress(fromUserInfo.getDress()); - pitBean.setIs_online(fromUserInfo.getIs_online()); - // 确保视图的pitNumber与数据的pit_number匹配 - if (pitNumber.equals("9")) { - mBinding.wvZc.setRoomWheatNumber("9"); - mBinding.wvZc.setData(pitBean); - roomInfoResp.getRoom_info().getPit_list().set(8, pitBean); - if (fromUserInfo.getUser_id() == SpUtil.getUserId()) { - myPitNumber = Integer.parseInt(pitNumber); - if (pitNumber.equals("9")) { - configGameOptionBtn(); - } - } + if (toPit.equals("9")) { + RoomPitBean fromBean = adapter.getData().get(fromIndex); + fromBean.setPit_number(toPit); + mBinding.wvZc.setRoomWheatNumber("9"); + mBinding.wvZc.setData(fromBean); + roomInfoResp.getRoom_info().getPit_list().set(8, fromBean); + + if (fromBean.getUser_id().equals(SpUtil.getUserId() + "")) { + myPitNumber = 9; + configGameOptionBtn(); } - RoomPitBean temp = dataList.get(fromIndex); + + RoomPitBean temp = adapter.getData().get(fromIndex); temp.setUser_id(""); temp.setAvatar(""); temp.setNickname(""); temp.setSex(""); temp.setCharm(""); temp.setDress(""); - dataList.set(fromIndex, temp); + temp.setImageType(false); + + roomInfoResp.getRoom_info().getPit_list().set(fromIndex, temp); + adapter.getData().set(fromIndex, temp); adapter.notifyItemChanged(fromIndex); - return; - } - - // 获取当前数据列表 - - - // 保存原始pit_number - String fromPitNumber = dataList.get(fromIndex).getPit_number(); - String toPitNumber = dataList.get(toIndex).getPit_number(); - - // 交换两个位置的对象 - RoomPitBean temp = dataList.get(fromIndex); - dataList.set(fromIndex, dataList.get(toIndex)); - dataList.set(toIndex, temp); - - // 确保pit_number正确 - dataList.get(fromIndex).setPit_number(fromPitNumber); - dataList.get(toIndex).setPit_number(toPitNumber); - - // 更新数据并通知适配器 - adapter.getData().clear(); - adapter.getData().addAll(dataList); - adapter.notifyItemChanged(fromIndex); - adapter.notifyItemChanged(toIndex); - - List pitList = roomInfoResp.getRoom_info().getPit_list(); - if (pitList != null && dataList != null) { - for (int i = 0; i < Math.min(pitList.size(), dataList.size()); i++) { - pitList.set(i, dataList.get(i)); - } - } - if (parentFragment != null) { - parentFragment.upRoomInfo(roomInfoResp); - } - if (getActivity() instanceof RoomActivity) { - ((RoomActivity) getActivity()).upRoomInfoFragment(roomInfoResp); + } else { + RoomPitBean fromBean = adapter.getData().get(fromIndex); + fromBean.setPit_number(toPit); + RoomPitBean toBean = adapter.getData().get(toIndex); + toBean.setPit_number(fromPit); + roomInfoResp.getRoom_info().getPit_list().set(fromIndex, toBean); + roomInfoResp.getRoom_info().getPit_list().set(toIndex, fromBean); + roomPitBeans.set(fromIndex, toBean); + roomPitBeans.set(toIndex, fromBean); + adapter.notifyDataSetChanged(); } } @@ -806,14 +778,14 @@ public class RoomJukeboxFragment extends BaseMvpFragment dataList = adapter.getData(); @@ -829,7 +801,7 @@ public class RoomJukeboxFragment extends BaseMvpFragment pageMap = new HashMap<>(); private SongAdapter adapter; @@ -122,15 +126,37 @@ public class SongRequestFragment extends BaseMvpFragment1) + int currentPage = pageMap.getOrDefault(selectedWheatPosition, 1); + boolean isRefresh = currentPage == 1; + if (s != null && s.getLists() != null && s.getLists().size() > 0) { - adapter.setSongList(s.getLists()); + // 有数据的情况 + if (isRefresh) { + // 刷新操作,替换所有数据 + adapter.setSongList(s.getLists()); + } else { + // 加载更多操作,添加新数据 + adapter.addSongList(s.getLists()); + } mBinding.smartRefreshLayout.finishRefresh(); mBinding.smartRefreshLayout.finishLoadMore(); } else { + // 没有数据的情况 + // 如果是第一页且没有数据,确保适配器为空(已经在updateSongList中清空) + // 这里不需要再次清空,因为已经在切换tab时清空了 mBinding.smartRefreshLayout.finishRefresh(); - mBinding.smartRefreshLayout.finishLoadMore(); + // 如果没有更多数据,设置没有更多数据的状态 + mBinding.smartRefreshLayout.finishLoadMoreWithNoMoreData(); + + // 如果是第一页且没有数据,需要重置页码为1,以便下次刷新能正常工作 + if (isRefresh) { + pageMap.put(selectedWheatPosition, 1); + page = 1; + } } } diff --git a/MainModule/src/main/java/com/xscm/modulemain/view/RoomJukeboxWheatView.java b/MainModule/src/main/java/com/xscm/modulemain/view/RoomJukeboxWheatView.java index 299ea91f..cf0e4507 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/view/RoomJukeboxWheatView.java +++ b/MainModule/src/main/java/com/xscm/modulemain/view/RoomJukeboxWheatView.java @@ -76,7 +76,6 @@ public class RoomJukeboxWheatView extends BaseWheatView { handleOffState(bean); } -// iv_tag_type.setVisibility(bean.isImageType()?VISIBLE:GONE); iv_tag_type.setImageResource(com.xscm.moduleutil.R.mipmap.mu_yc); } @@ -106,6 +105,7 @@ public class RoomJukeboxWheatView extends BaseWheatView { mIvFrame.setSource(bean.getDress(), 3); } + // if(pitNumber.equals("9")){ // iv_tag_type.setVisibility(GONE); // mTvName.setBackgroundColor(com.xscm.moduleutil.R.color.transparent); @@ -132,7 +132,6 @@ public class RoomJukeboxWheatView extends BaseWheatView { mRiv.setVisibility(VISIBLE); mRiv.setImageResource(R.mipmap.jukebox_room_mask); mIvShutup.setVisibility( GONE); - iv_tag_type.setVisibility(GONE); // ImageUtils.loadRes(com.xscm.moduleutil.R.mipmap.room_microphone_off, mIvShutup); mIvFrame.stopAll(); mIvFrame.setVisibility(GONE);