Files
yusheng-android/MainModule/src/main/java/com/xscm/modulemain/adapter/MyCreateAdapter.java

496 lines
20 KiB
Java
Raw Normal View History

2025-10-28 16:56:13 +08:00
package com.xscm.modulemain.adapter;
2025-10-20 10:16:44 +08:00
import android.annotation.SuppressLint;
import android.content.Context;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.TextUtils;
import android.text.style.ForegroundColorSpan;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.RecyclerView;
import com.alibaba.android.arouter.launcher.ARouter;
2025-10-28 16:56:13 +08:00
import com.xscm.modulemain.R;
2025-11-03 15:30:57 +08:00
import com.xscm.modulemain.activity.room.activity.RoomActivity;
2025-10-28 16:56:13 +08:00
import com.xscm.modulemain.activity.user.activity.MyRoomActivity;
2025-10-20 10:16:44 +08:00
import com.makeramen.roundedimageview.RoundedImageView;
2025-10-28 19:13:52 +08:00
import com.xscm.modulemain.manager.RoomManager;
2025-10-20 10:16:44 +08:00
import com.xscm.moduleutil.RoomAutionTimeBean;
import com.xscm.moduleutil.bean.MyCpRoom;
import com.xscm.moduleutil.bean.MyFootResp;
import com.xscm.moduleutil.bean.MyRoomBean;
import com.xscm.moduleutil.bean.RoomData;
import com.xscm.moduleutil.bean.RoomRelationBean;
import com.xscm.moduleutil.bean.RoonGiftModel;
import com.xscm.moduleutil.bean.ViewItem;
import com.xscm.moduleutil.color.ThemeableDrawableUtils;
import com.xscm.moduleutil.dialog.ConfirmDialog;
import com.xscm.moduleutil.utils.ARouteConstants;
import com.xscm.moduleutil.utils.ColorManager;
import com.xscm.moduleutil.utils.ImageUtils;
import com.xscm.moduleutil.widget.GifAvatarOvalView;
import java.util.ArrayList;
import java.util.List;
public class MyCreateAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private List<ViewItem> viewItems = new ArrayList<>();
private int selectedRelationPosition = -1;
private int selectedTimePosition = -1;
private int selectedGiftPosition = -1;
private MyRoomActivity myRoomActivity;
public void setMyRoomActivity(MyRoomActivity myRoomActivity) {
this.myRoomActivity = myRoomActivity;
}
2025-10-20 10:16:44 +08:00
public void submitList(List<ViewItem> items) {
if (items == null || items.isEmpty()) {
viewItems.clear();
notifyDataSetChanged();
return;
}
List<ViewItem> filteredList = new ArrayList<>();
for (ViewItem item : items) {
int type = item.getType();
Object data = item.getData();
// 判断是否为空数据
boolean isValid = true;
switch (type) {
case ViewItem.TYPE_TEXT:
// 文本类型直接展示(字符串不会为 null
break;
case ViewItem.TYPE_RELATION:
isValid = data instanceof MyRoomBean && ((MyRoomBean) data).getRoom_name() != null; // 假设你有一个 isValid() 方法判断是否为空
break;
case ViewItem.TYPE_GIFT:
isValid = data instanceof MyCpRoom && !TextUtils.isEmpty(((MyCpRoom) data).getRoom_name()); // 示例判断字段非空
break;
case ViewItem.TYPE_IMAGE_SELECTION:
isValid = data instanceof MyFootResp && !TextUtils.isEmpty(((MyFootResp) data).getRoom_name());
break;
default:
isValid = false; // 默认不展示未知类型
break;
}
if (isValid) {
filteredList.add(item);
}
}
viewItems.clear();
viewItems.addAll(filteredList);
notifyDataSetChanged();
}
@Override
public int getItemViewType(int position) {
return viewItems.get(position).getType();
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
switch (viewType) {
case ViewItem.TYPE_TEXT:
return new TextViewHolder(inflater.inflate(R.layout.room_li_bu, parent, false));
case ViewItem.TYPE_RELATION:
return new RelationViewHolder(inflater.inflate(R.layout.room_fragment_my_room_list, parent, false));
case ViewItem.TYPE_GIFT:
2025-11-03 15:30:57 +08:00
return new RelationViewTimHolder(myRoomActivity,inflater.inflate(R.layout.room_fragment_my_room_cp_list, parent, false));
2025-10-20 10:16:44 +08:00
case ViewItem.TYPE_IMAGE_SELECTION:
2025-11-03 15:30:57 +08:00
return new GiftViewHolder(myRoomActivity,inflater.inflate(R.layout.room_index_item_chatroom_my_foot, parent, false));
2025-10-20 10:16:44 +08:00
default:
throw new IllegalArgumentException("Unknown view type");
}
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, @SuppressLint("RecyclerView") int position) {
ViewItem item = viewItems.get(position);
switch (item.getType()) {
case ViewItem.TYPE_TEXT:
RoomData roomData = (RoomData) item.getData();
((TextViewHolder) holder).bind((roomData));
break;
case ViewItem.TYPE_RELATION:
MyRoomBean relationBean = (MyRoomBean) item.getData();
((RelationViewHolder) holder).bind(relationBean);
break;
case ViewItem.TYPE_IMAGE_SELECTION:
MyFootResp myFootResp = (MyFootResp) item.getData();
((GiftViewHolder) holder).bind(myFootResp);
break;
case ViewItem.TYPE_GIFT:
MyCpRoom roomAutionTimeBean = (MyCpRoom) item.getData();
((RelationViewTimHolder) holder).bind(roomAutionTimeBean);
break;
}
}
public interface OnItemSelectedListener {
void onItemSelected(int viewType, int position);
}
private OnItemSelectedListener listener;
public void setOnItemSelectedListener(OnItemSelectedListener listener) {
this.listener = listener;
}
public RoomRelationBean getSelectedRelation() {
if (selectedRelationPosition != -1) {
ViewItem item = viewItems.get(selectedRelationPosition);
if (item.getData() instanceof RoomRelationBean) {
return (RoomRelationBean) item.getData();
}
}
return null;
}
public RoomAutionTimeBean getSelectedTime() {
if (selectedTimePosition != -1) {
ViewItem item = viewItems.get(selectedTimePosition);
if (item.getData() instanceof RoomAutionTimeBean) {
return (RoomAutionTimeBean) item.getData();
}
}
return null;
}
public RoonGiftModel getSelectedGift() {
if (selectedGiftPosition != -1) {
ViewItem item = viewItems.get(selectedGiftPosition);
if (item.getData() instanceof RoonGiftModel) {
return (RoonGiftModel) item.getData();
}
}
return null;
}
// 定义接口
public interface OnImageClickListener {
void onImageClick(View view, RoomData roomData);
}
// 添加接口类型的变量
private static OnImageClickListener onImageClickListener;
// 提供一个方法来设置接口变量
public void setOnImageClickListener(OnImageClickListener listener) {
this.onImageClickListener = listener;
}
@Override
public int getItemCount() {
return viewItems.size();
}
static class TextViewHolder extends RecyclerView.ViewHolder {
TextView textView;
ImageView imageView1, imageView2;
2025-10-20 10:16:44 +08:00
TextViewHolder(View itemView) {
super(itemView);
textView = itemView.findViewById(R.id.tv_title);
imageView1 = itemView.findViewById(R.id.iv_footprint);
imageView2 = itemView.findViewById(R.id.iv_delete_foot);
}
void bind(RoomData roomData) {
textView.setText(roomData.getTitle());
if (roomData.getTitleType() == 0) {
2025-10-20 10:16:44 +08:00
imageView2.setVisibility(View.INVISIBLE);
} else {
2025-10-20 10:16:44 +08:00
imageView2.setVisibility(View.VISIBLE);
imageView2.setImageResource(roomData.getTitleType());
}
imageView1.setImageResource(roomData.getTitleIcon());
imageView2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (onImageClickListener != null) {
onImageClickListener.onImageClick(view, roomData);
}
}
});
}
}
class RelationViewHolder extends RecyclerView.ViewHolder {
2025-10-20 10:16:44 +08:00
RoundedImageView riv;
ImageView iv_play, im_sh;
TextView tv_name;
TextView tv_sy;
TextView tv_user_id, tv_gz, tv_zx, tv_fw, rl_mx, tv_room_bt;
ConstraintLayout cl_my_room_list;
RelationViewHolder(View itemView) {
super(itemView);
riv = itemView.findViewById(R.id.riv);
iv_play = itemView.findViewById(R.id.iv_play);
tv_name = itemView.findViewById(R.id.tv_name);
tv_sy = itemView.findViewById(R.id.tv_sy);
tv_user_id = itemView.findViewById(R.id.tv_user_id);
tv_gz = itemView.findViewById(R.id.tv_gz);
tv_zx = itemView.findViewById(R.id.tv_zx);
tv_fw = itemView.findViewById(R.id.tv_fw);
rl_mx = itemView.findViewById(R.id.rl_mx);
tv_room_bt = itemView.findViewById(R.id.tv_room_bt);
im_sh = itemView.findViewById(R.id.im_sh);
cl_my_room_list = itemView.findViewById(R.id.cl_my_room_list);
}
void bind(MyRoomBean item) {
ImageUtils.loadImageView(item.getRoom_cover(), riv);
if (item.getLabel_icon() != null) {
ImageUtils.loadImageView(item.getLabel_icon(), iv_play);
}
tv_name.setText(item.getRoom_name());
tv_sy.setText(item.getToday_profit() + "");
tv_user_id.setText("ID: " + item.getRoom_number());
String concernText = "关注:" + item.getFollow_num();
SpannableString spannableString = new SpannableString(concernText);
// 设置关注数字部分的颜色为黑色
spannableString.setSpan(new ForegroundColorSpan(ContextCompat.getColor(itemView.getContext(), R.color.black)), 2, concernText.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
tv_gz.setText(spannableString);
String concernText1 = "在线:" + item.getOnline_num();
SpannableString spannableString1 = new SpannableString(concernText1);
// 设置关注数字部分的颜色为黑色
spannableString1.setSpan(new ForegroundColorSpan(ContextCompat.getColor(itemView.getContext(), R.color.black)), 2, concernText1.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
2025-10-20 10:16:44 +08:00
tv_zx.setText(spannableString1);
String concernText2 = "访问:" + item.getVisit_num();
SpannableString spannableString2 = new SpannableString(concernText2);
// 设置关注数字部分的颜色为黑色
spannableString2.setSpan(new ForegroundColorSpan(ContextCompat.getColor(itemView.getContext(), R.color.black)), 2, concernText2.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
2025-10-20 10:16:44 +08:00
tv_fw.setText(spannableString2);
rl_mx.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO: 跳转到房间详情页面
if (item.getApply_status().equals("1")) {
2025-10-20 10:16:44 +08:00
queren(itemView.getContext());
return;
}
2025-11-03 15:30:57 +08:00
if (myRoomActivity != null)
myRoomActivity.isShowLoading(true);
2025-10-20 10:16:44 +08:00
// startActivity(new Intent(getContext(), RoomDetailsActivity.class));
ARouter.getInstance().build(ARouteConstants.MY_ROOM_DETAILS).withString("roomId", item.getRoom_id() + "").navigation();
2025-10-20 10:16:44 +08:00
}
});
cl_my_room_list.setOnClickListener(new View.OnClickListener() {//跳转房间
@Override
public void onClick(View v) {
if (item.getApply_status().equals("1")) {
2025-10-20 10:16:44 +08:00
queren(itemView.getContext());
return;
}
if (myRoomActivity != null)
myRoomActivity.isShowLoading(true);
RoomManager.getInstance().fetchRoomDataAndEnter(itemView.getContext(), item.getRoom_id() + "", "",null);
2025-10-24 17:52:11 +08:00
2025-10-20 10:16:44 +08:00
// TODO: 跳转到房间
2025-10-24 17:52:11 +08:00
// ARouter.getInstance().build(ARouteConstants.ROOM_DETAILS).withString("from", "我的界面").withString("roomId", item.getRoom_id() + "").navigation();
2025-10-20 10:16:44 +08:00
}
});
tv_room_bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {//房间补贴
if (item.getApply_status().equals("1")) {
2025-10-20 10:16:44 +08:00
queren(itemView.getContext());
return;
}
RoomManager.getInstance().fetchRoomDataAndEnter(itemView.getContext(), item.getRoom_id() + "", "",null);
2025-10-24 17:52:11 +08:00
// ARouter.getInstance().build(ARouteConstants.ROOM_ALLOWANCE).withString("from", "我的界面").withString("roomId", item.getRoom_id() + "").navigation();
2025-10-20 10:16:44 +08:00
}
});
if (item.getApply_status().equals("2")) {
2025-10-20 10:16:44 +08:00
im_sh.setVisibility(View.GONE);
} else if (item.getApply_status().equals("1")) {
2025-10-20 10:16:44 +08:00
im_sh.setVisibility(View.VISIBLE);
}
ThemeableDrawableUtils.setThemeableRoundedBackground(rl_mx, itemView.getContext().getColor(com.xscm.moduleutil.R.color.color6c49e25), 53);
2025-10-20 10:16:44 +08:00
rl_mx.setTextColor(ColorManager.getInstance().getPrimaryColorInt());
ThemeableDrawableUtils.setThemeableRoundedBackground(tv_room_bt, itemView.getContext().getColor(com.xscm.moduleutil.R.color.colorCDEB52E), 53);
tv_room_bt.setTextColor(ContextCompat.getColor(itemView.getContext(), com.xscm.moduleutil.R.color.colorC58600));
2025-10-20 10:16:44 +08:00
}
}
2025-10-20 10:16:44 +08:00
private static void queren(Context context) {
// 创建并显示确认对话框
new ConfirmDialog(context,
"温馨提示",
"您创建的房间正在审核中,请耐心等待或联系人工客服解决处理",
"知道了",
"",
v -> {
// 点击“确认”按钮时执行删除操作
},
v -> {
// 点击“取消”按钮时什么都不做
}, false, 0).show();
}
static class RelationViewTimHolder extends RecyclerView.ViewHolder {
ConstraintLayout cl_my_room_list;
GifAvatarOvalView user_avatar1, user_avatar2;
TextView tv_gx, tv_name, tv_sy, tv_user_id, room_head_top2, room_head_top3, rl_mx, tv_time;
ImageView iv_play;
2025-11-03 15:30:57 +08:00
private MyRoomActivity myRoomActivity;
RelationViewTimHolder(MyRoomActivity myRoomActivity ,View itemView) {
2025-10-20 10:16:44 +08:00
super(itemView);
2025-11-03 15:30:57 +08:00
this.myRoomActivity = myRoomActivity;
2025-10-20 10:16:44 +08:00
cl_my_room_list = itemView.findViewById(R.id.cl_my_room_list);
user_avatar1 = itemView.findViewById(R.id.user_avatar1);
user_avatar2 = itemView.findViewById(R.id.user_avatar2);
tv_gx = itemView.findViewById(R.id.tv_gx);
iv_play = itemView.findViewById(R.id.iv_play);
tv_name = itemView.findViewById(R.id.tv_name);
tv_sy = itemView.findViewById(R.id.tv_sy);
tv_user_id = itemView.findViewById(R.id.tv_user_id);
room_head_top2 = itemView.findViewById(R.id.room_head_top2);
room_head_top3 = itemView.findViewById(R.id.room_head_top3);
rl_mx = itemView.findViewById(R.id.rl_mx);
tv_time = itemView.findViewById(R.id.tv_time);
}
void bind(MyCpRoom item) {
ImageUtils.loadImageView(item.getUser1_avatar(), user_avatar1);
ImageUtils.loadImageView(item.getUser2_avatar(), user_avatar2);
tv_gx.setText(item.getRelation());
tv_name.setText(item.getRoom_name());
tv_sy.setText(item.getEarnings() + "");
tv_user_id.setText("ID: " + item.getRoom_number());
// room_head_top2.setText();
tv_time.setText(formatTimestampToDaysHours(Long.parseLong(item.getEnd_time())));
rl_mx.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
2025-11-03 15:30:57 +08:00
if (myRoomActivity != null){
myRoomActivity.isShowLoading(true);
}
2025-10-20 10:16:44 +08:00
// TODO: 跳转到房间详情页面
RoomManager.getInstance().fetchRoomDataAndEnter(itemView.getContext(), item.getRoom_id() + "", "",null);
2025-10-20 10:16:44 +08:00
// startActivity(new Intent(getContext(), RoomDetailsActivity.class));
2025-10-24 17:52:11 +08:00
// ARouter.getInstance().build(ARouteConstants.MY_ROOM_DETAILS).withString("roomId", item.getRoom_id() + "").navigation();
2025-10-20 10:16:44 +08:00
}
});
cl_my_room_list.setOnClickListener(new View.OnClickListener() {//跳转房间
@Override
public void onClick(View v) {
2025-11-03 15:30:57 +08:00
if (myRoomActivity != null){
myRoomActivity.isShowLoading(true);
}
RoomManager.getInstance().fetchRoomDataAndEnter(itemView.getContext(), item.getRoom_id() + "", "",null);
2025-10-24 17:52:11 +08:00
2025-10-20 10:16:44 +08:00
// TODO: 跳转到房间
2025-10-24 17:52:11 +08:00
// ARouter.getInstance().build(ARouteConstants.ROOM_DETAILS).withString("from", "我的界面").withString("roomId", item.getRoom_id() + "").navigation();
2025-10-20 10:16:44 +08:00
}
});
ThemeableDrawableUtils.setThemeableRoundedBackground(rl_mx, itemView.getContext().getColor(com.xscm.moduleutil.R.color.color6c49e25), 53);
2025-10-20 10:16:44 +08:00
rl_mx.setTextColor(ColorManager.getInstance().getPrimaryColorInt());
}
}
2025-10-20 10:16:44 +08:00
public static String formatTimestampToDaysHours(long timestamp) {
// 获取当前时间戳(秒)
long currentTimestamp = System.currentTimeMillis() / 1000;
// 计算时间差(秒)
long timeDifferenceSeconds = Math.abs(currentTimestamp - timestamp);
// 转换为天数和小时数
long days = timeDifferenceSeconds / (24 * 60 * 60);
long remainingSecondsAfterDays = timeDifferenceSeconds % (24 * 60 * 60);
long hours = remainingSecondsAfterDays / (60 * 60);
return days + "" + hours + "小时";
}
static class GiftViewHolder extends RecyclerView.ViewHolder {
RoundedImageView iv_follow_bg;
ImageView iv_type, iv_play;
TextView tv_name, tv_num;
ConstraintLayout rl_root;
2025-11-03 15:30:57 +08:00
private MyRoomActivity roomActivity;
GiftViewHolder(MyRoomActivity roomActivity, View itemView) {
2025-10-20 10:16:44 +08:00
super(itemView);
2025-11-03 15:30:57 +08:00
this.roomActivity = roomActivity;
2025-10-20 10:16:44 +08:00
iv_follow_bg = itemView.findViewById(R.id.iv_follow_bg);
iv_type = itemView.findViewById(R.id.iv_type);
tv_name = itemView.findViewById(R.id.tv_name);
iv_play = itemView.findViewById(R.id.iv_play);
tv_num = itemView.findViewById(R.id.tv_num);
rl_root = itemView.findViewById(R.id.rl_root);
}
void bind(MyFootResp item) {
ImageUtils.loadHeadCC(item.getRoom_cover(), iv_follow_bg);
ImageUtils.loadHeadCC(item.getLabel_icon(), iv_type);
tv_name.setText(item.getRoom_name());
tv_num.setText(item.getHot_value());
rl_root.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
2025-11-03 15:30:57 +08:00
if (roomActivity != null){
roomActivity.isShowLoading(true);
}
RoomManager.getInstance().fetchRoomDataAndEnter(itemView.getContext(), item.getRoom_id() + "", "",null);
2025-10-24 17:52:11 +08:00
// ARouter.getInstance().build(ARouteConstants.ROOM_DETAILS).withString("from", "我的界面").withString("roomId", item.getRoom_id() + "").navigation();
2025-10-20 10:16:44 +08:00
}
});
}
}
}