1:修改网络初始化的时候,放在点击了弹框后在进行

2:添加礼物墙展示用户信息功能
This commit is contained in:
2026-01-23 11:48:44 +08:00
parent d07ca522ab
commit 9f8f8137d1
20 changed files with 471 additions and 14 deletions

View File

@@ -42,7 +42,7 @@ public class GiftWallActivity extends BaseMvpActivity<GiftWallPresenter, Activit
// 在获取到数据后调用此方法初始化 ViewPager
private void setupViewPagerWithData(GiftUserWallBean data) {
sectionsPagerAdapter = new SectionsGifPagerAdapter(this, data);
sectionsPagerAdapter = new SectionsGifPagerAdapter(this, data,userId+"");
ViewPager2 viewPager = mBinding.viewPager;
viewPager.setAdapter(sectionsPagerAdapter);
TabLayout tabs = mBinding.tabs;

View File

@@ -11,9 +11,11 @@ import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;
import com.blankj.utilcode.util.ActivityUtils;
import com.xscm.modulemain.activity.user.PageViewModel;
import com.xscm.modulemain.adapter.GiftWallAdapter;
import com.xscm.modulemain.databinding.FragmentGiftWallBinding;
import com.xscm.modulemain.dialog.GiftWallListDialog;
import com.xscm.moduleutil.bean.GiftUserWallBean;
import org.jetbrains.annotations.NotNull;
@@ -35,6 +37,8 @@ public class PlaceholderGiftFragment extends Fragment {
private GiftWallAdapter mGiftWallAdapter;
private String userId;
public static PlaceholderGiftFragment newInstance(int index) {
PlaceholderGiftFragment fragment = new PlaceholderGiftFragment();
// Bundle bundle = new Bundle();
@@ -63,6 +67,7 @@ public class PlaceholderGiftFragment extends Fragment {
pageViewModel.setNoLiangDataList(giftList);
}
}
userId=getArguments().getString("userId");
}
pageViewModel.setIndex(index);
@@ -72,7 +77,9 @@ public class PlaceholderGiftFragment extends Fragment {
@Override
public void onUserClick(GiftUserWallBean.GiftWallBean emotion) {
// 处理用户点击事件
GiftWallListDialog giftWallListDialog = new GiftWallListDialog(ActivityUtils.getTopActivity());
giftWallListDialog.show(userId,emotion.getGift_id()+"", emotion.getGift_name(),emotion.getTop_users_count());
}
});
}

View File

@@ -11,6 +11,7 @@ import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.blankj.utilcode.util.LogUtils;
import com.xscm.modulemain.R;
import com.xscm.moduleutil.bean.CombinedGiftBean;
import com.xscm.moduleutil.bean.GiftUserWallBean;
@@ -96,7 +97,9 @@ public class GiftWallAdapter extends BaseAdapter {
public void onClick(View v) {
if (item.is_liang()) {
if (mOnUserClickListener != null) {
mOnUserClickListener.onUserClick(item);
if (item.getTop_users() != null && item.getTop_users().size() > 0) {
mOnUserClickListener.onUserClick(item);
}
}
}
}

View File

@@ -0,0 +1,25 @@
package com.xscm.modulemain.adapter
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.xscm.modulemain.R
import com.xscm.moduleutil.bean.GiftWallUserBean
import com.xscm.moduleutil.bean.GroupBean
import com.xscm.moduleutil.utils.ImageUtils
/**
* 项目名称:羽声语音
* 时间2026/1/23 10:35
* 用途:礼物墙用户显示列表
*/
class GiftWallListAdapter : BaseQuickAdapter<GiftWallUserBean.GiftWallUserItemBean, BaseViewHolder>(R.layout.item_gift_wall_details) {
override fun convert(
helper: BaseViewHolder,
item: GiftWallUserBean.GiftWallUserItemBean?
) {
helper.setText(R.id.tv_gift_wheat_name, item?.nickname)
ImageUtils.loadHead(item?.avatar, helper.getView(R.id.riv_gift_wheat_head))
helper.setText(R.id.tv_gift_wheat_count, item?.count.toString())
}
}

View File

@@ -25,16 +25,19 @@ public class SectionsGifPagerAdapter extends FragmentStateAdapter {
private final Context mContext;
private GiftUserWallBean giftData; // 添加数据字段
private String userId;
// public SectionsPagerAdapter(Context context, FragmentManager fm, GiftUserWallBean giftData) {
// super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
// this.mContext = context;
// this.giftData = giftData;
// }
public SectionsGifPagerAdapter(@NonNull FragmentActivity fragmentActivity, GiftUserWallBean giftData) {
public SectionsGifPagerAdapter(@NonNull FragmentActivity fragmentActivity, GiftUserWallBean giftData, String userId) {
super(fragmentActivity);
this.mContext = fragmentActivity;
this.giftData = giftData;
this.userId = userId;
}
@NonNull
@@ -55,6 +58,7 @@ public class SectionsGifPagerAdapter extends FragmentStateAdapter {
}
}
args.putInt("section_number", position+1);
args.putString("userId", userId);
fragment.setArguments(args);
return fragment;
}

View File

@@ -0,0 +1,151 @@
package com.xscm.modulemain.dialog
import android.app.Dialog
import android.content.Context
import android.view.Gravity
import android.view.LayoutInflater
import android.view.ViewGroup
import com.blankj.utilcode.util.ScreenUtils
import com.scwang.smartrefresh.layout.api.RefreshLayout
import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener
import com.xscm.modulemain.R
import com.xscm.modulemain.adapter.GiftWallListAdapter
import com.xscm.modulemain.databinding.DialogEmotionPickerBinding
import com.xscm.modulemain.databinding.DialogGiftWallListBinding
import com.xscm.moduleutil.bean.GiftWallUserBean
import com.xscm.moduleutil.http.BaseObserver
import com.xscm.moduleutil.http.RetrofitClient
import com.xscm.moduleutil.widget.dialog.BaseDialog
import io.reactivex.disposables.Disposable
/**
* 项目名称:羽声语音
* 时间2026/1/22 18:55
* 用途:礼物墙展示人员信息
*/
class GiftWallListDialog(
context: Context
) : Dialog(context, com.xscm.moduleutil.R.style.BaseDialogStyleH) {
var page: Int = 1
var userId: String = ""
var giftId: String = ""
var giftName: String = ""
var userSize: Int = 0
private var mBinding: DialogGiftWallListBinding =
DialogGiftWallListBinding.inflate(LayoutInflater.from(context))
init {
setContentView(mBinding.root)
// 设置对话框从底部弹出
window?.setGravity(Gravity.CENTER)
// 设置对话框的宽度为屏幕宽度
window?.setLayout(
(ScreenUtils.getScreenWidth() * 348f / 375).toInt(),
ViewGroup.LayoutParams.WRAP_CONTENT
)
// 添加动画效果
window?.setWindowAnimations(com.xscm.moduleutil.R.style.DialogAnimationt)
setCancelable(false)
setCanceledOnTouchOutside(false)
}
private fun initView() {
mBinding.ivClose.setOnClickListener {
dismiss()
}
mBinding.tvTitle.text = giftName
mBinding.tvName.text = giftName
mBinding.tvUserNum.text = userSize.toString()
mBinding.rvGiftWall.adapter = GiftWallListAdapter()
}
private fun initData() {
mBinding.smartRefreshLayout.setOnRefreshLoadMoreListener(object :
OnRefreshLoadMoreListener {
override fun onRefresh(refreshLayout: RefreshLayout) {
page = 1
setHttp(page)
}
override fun onLoadMore(refreshLayout: RefreshLayout) {
page++
setHttp(page)
}
})
setHttp(page)
}
private fun setAdapterDetails(giftWallUserItemBean: List<GiftWallUserBean.GiftWallUserItemBean>) {
if (page == 1) {
(mBinding.rvGiftWall.adapter as GiftWallListAdapter).setNewData(giftWallUserItemBean)
} else {
val adapter = mBinding.rvGiftWall.adapter as GiftWallListAdapter
val currentData = adapter.data
// 过滤掉重复的数据
val newData = giftWallUserItemBean.filter { newItem ->
currentData.none { existingItem ->
// 假设GiftWallUserItemBean有id字段用于比较
existingItem.user_id == newItem.user_id
}
}
// 只有当有新数据时才添加
if (newData.isNotEmpty()) {
adapter.addData(newData)
} else {
page = 1
}
}
}
private fun setHttp(page: Int) {
RetrofitClient.getInstance()
.giftWallUserList(userId, giftId, page, object : BaseObserver<GiftWallUserBean>() {
override fun onSubscribe(d: Disposable) {
}
override fun onNext(t: GiftWallUserBean) {
mBinding.tvNum.text = t.count.toString()
if (t.users.isNotEmpty()) {
setAdapterDetails(t.users)
}
}
})
mBinding.smartRefreshLayout.finishRefresh()
mBinding.smartRefreshLayout.finishLoadMore()
}
fun show(
userId: String,
giftId: String,
giftName: String,
userSize: Int
) {
this.userSize = userSize
this.userId = userId
this.giftId = giftId
this.giftName = giftName
super.show()
initView()
initData()
}
}

View File

@@ -34,6 +34,7 @@ import com.xscm.modulemain.activity.WebViewActivity;
import com.xscm.moduleutil.base.CommonAppContext;
import com.xscm.moduleutil.base.WebUrlConstants;
import com.xscm.moduleutil.bean.BlindBoxStatus;
import com.xscm.moduleutil.bean.GiftLabelBean;
import com.xscm.moduleutil.dialog.ConfirmDialog;
import com.xscm.moduleutil.event.EffectEvent;
import com.xscm.moduleutil.event.FloatingScreenEvent;
@@ -899,6 +900,10 @@ public class RoomSettingFragment extends BaseMvpDialogFragment<RoomSettingPresen
(giftBagId == 12 && filteredList.get(j).getChildren().get(k).getType() == RoomSettingBean.QXRoomSettingTypeRoomTimeSpace)) {
if (status != 1) {
filteredList.get(j).getChildren().remove(k);
}else {
if (SpUtil.getShelf() == 1) {
filteredList.get(j).getChildren().remove(k);
}
}
}
}