package com.xscm.modulemain.dialog; import android.app.Dialog; import android.os.Bundle; import android.view.Gravity; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.recyclerview.widget.GridLayoutManager; import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseViewHolder; import com.xscm.modulemain.R; import com.xscm.modulemain.activity.room.contacts.RoomCloseContacts; import com.xscm.modulemain.databinding.RoomConcernDialogBinding; import com.xscm.modulemain.activity.room.presenter.RoomClosePresenter; import com.hjq.toast.ToastUtils; import com.xscm.moduleutil.base.BaseMvpDialogFragment; import com.xscm.moduleutil.bean.RoomRelationBean; import com.xscm.moduleutil.bean.room.FriendUserBean; import com.xscm.moduleutil.utils.ImageUtils; import java.util.List; import lombok.Setter; /** *@author qx *@data 2025/8/24 *@description: 卡关系页面 */ @Setter public class RoomConcernDialogFragment extends BaseMvpDialogFragment implements RoomCloseContacts.View { private int selectedPosition = -1; private BaseQuickAdapter mAdapter; private FriendUserBean relationshipList; public static RoomConcernDialogFragment newInstance(FriendUserBean relationshipList, OnConcernSelectedListener listener) { RoomConcernDialogFragment fragment = new RoomConcernDialogFragment(listener); Bundle args = new Bundle(); args.putSerializable("FriendUserBean", relationshipList); fragment.setArguments(args); return fragment; } public void initArgs(Bundle arguments) { super.initArgs(arguments); relationshipList = (FriendUserBean) arguments.getSerializable("FriendUserBean"); } @Override public int getLayoutId() { return R.layout.room_concern_dialog; } @Override protected void initDialogStyle(Window window) { super.initDialogStyle(window); window.setGravity(Gravity.CENTER); WindowManager.LayoutParams lp = window.getAttributes(); lp.dimAmount = 0.4f; // 使用dp单位转换为像素 lp.width = com.blankj.utilcode.util.ConvertUtils.dp2px(275); // 宽度275dp lp.height = com.blankj.utilcode.util.ConvertUtils.dp2px(452); // 高度452dp window.setAttributes(lp); window.addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); } @Override public void initView() { // getWindow().setLayout((int) (ScreenUtils.getScreenWidth() / 375.0 * 341), RadioGroup.LayoutParams.WRAP_CONTENT); ImageUtils.loadImageView(relationshipList.getUser1_avatar(), mBinding.image); ImageUtils.loadImageView(relationshipList.getUser2_avatar(), mBinding.image2); mBinding.tvName1.setText(relationshipList.getUser1_nickname()); mBinding.tvName2.setText(relationshipList.getUser2_nickname()); mBinding.tvZhi.setText(relationshipList.getHeart_value()); mBinding.btnAction.setOnClickListener(this::onViewClicked); // mBinding.btnCancel.setOnClickListener(this::onViewClicked); mBinding.rlList.setLayoutManager(new GridLayoutManager(getContext(), 3)); mAdapter = new BaseQuickAdapter(R.layout.room_concern_item) { @Override protected void convert(BaseViewHolder helper, RoomRelationBean item) { TextView tvRelation = helper.getView(R.id.tv_relation); tvRelation.setText(item.getName()); // 根据当前选中的位置来设置颜色 if (helper.getAdapterPosition() == selectedPosition) { tvRelation.setSelected(true); tvRelation.setTextColor(getResources().getColor(com.xscm.moduleutil.R.color.white)); } else { tvRelation.setSelected(false); tvRelation.setTextColor(getResources().getColor(com.xscm.moduleutil.R.color.black)); } // 设置点击事件 tvRelation.setOnClickListener(v -> { // 更新选中的位置 int previousPosition = selectedPosition; selectedPosition = helper.getAdapterPosition(); // 通知Adapter数据集已更改,以刷新视图 if (previousPosition != -1) { notifyItemChanged(previousPosition); } notifyItemChanged(selectedPosition); }); } }; // mAdapter.setOnItemChildClickListener((adapter, view, position) -> { // selectedPosition = position; // }); mBinding.rlList.setAdapter(mAdapter); mAdapter.bindToRecyclerView(mBinding.rlList); // mAdapter.setNewData(list); } @Override protected RoomClosePresenter bindPresenter() { return new RoomClosePresenter(this, getContext()); } @Override public void initData() { MvpPre.roomRelationList("2"); // MvpPre.getConcernList(); } public OnConcernSelectedListener listener; public void onViewClicked(View view) { if (view.getId() == R.id.btn_action) {//确认 if (listener != null && selectedPosition != -1) { RoomRelationBean selectedDean = mAdapter.getItem(selectedPosition); listener.onConcernSelected(selectedDean, relationshipList); dismiss(); }else { ToastUtils.show("请选择关系"); return; } } // else if (view.getId() == R.id.btn_cancel) {//取消 // dismiss(); // } } public void dismiss() { super.dismiss(); } @NonNull @Override public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { Dialog dialog = super.onCreateDialog(savedInstanceState); dialog.setCancelable(false); // 禁止通过返回键关闭对话框 return dialog; } @Override public void onStart() { super.onStart(); Dialog dialog = getDialog(); if (dialog != null) { dialog.setCanceledOnTouchOutside(false); // 禁止点击对话框外部关闭对话框 } } public RoomConcernDialogFragment(OnConcernSelectedListener listener) { this.listener = listener; } @Override public void roomRelationList(List list) { mAdapter.setNewData(list); } public interface OnConcernSelectedListener { void onConcernSelected(RoomRelationBean selectedDean, FriendUserBean relationshipList); } }