Files
yusheng-android/MainModule/src/main/java/com/xscm/modulemain/dialog/RoomConcernDialogFragment.java
2025-11-07 09:22:39 +08:00

192 lines
6.7 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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<RoomClosePresenter, RoomConcernDialogBinding> implements RoomCloseContacts.View {
private int selectedPosition = -1;
private BaseQuickAdapter<RoomRelationBean, BaseViewHolder> 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<RoomRelationBean, BaseViewHolder>(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<RoomRelationBean> list) {
mAdapter.setNewData(list);
}
public interface OnConcernSelectedListener {
void onConcernSelected(RoomRelationBean selectedDean, FriendUserBean relationshipList);
}
}