refactor: 修改util层

修改util层语言为kotlin
This commit is contained in:
糕小菜 2024-10-24 22:51:12 +08:00
parent 25405fd120
commit ab7e9e2c8a
10 changed files with 91 additions and 406 deletions

View File

@ -1,24 +1,22 @@
package com.kaixed.kchat.utils; package com.kaixed.kchat.utils
public class Constants { /**
* @Author: kaixed
* @Date: 2024/10/24 22:03
*/
object Constants {
// 消息类型 // 消息类型
const val TYPE_ITEM_MINE: Int = 1
public static final int TYPE_ITEM_MINE = 1; const val TYPE_ITEM_OTHER: Int = 2
public static final int TYPE_ITEM_OTHER = 2; const val TYPE_MESSAGE_WITHDRAW: Int = 3
public static final int TYPE_MESSAGE_WITHDRAW = 3;
// mmkv // mmkv
const val MMKV_USER_SESSION: String = "userSession"
const val USER_LOGIN_STATUS: String = "userLoginStatus"
const val MMKV_COMMON_DATA: String = "commonData"
public static final String MMKV_USER_SESSION = "userSession"; const val MESSAGE_TYPE_NORMAL: Int = 1
public static final String USER_LOGIN_STATUS = "userLoginStatus"; const val MESSAGE_TYPE_FUNCTION: Int = 2
public static final String MMKV_COMMON_DATA = "commonData"; const val MESSAGE_TYPE_TITLE: Int = 2
public static final int MESSAGE_TYPE_NORMAL = 1;
public static final int MESSAGE_TYPE_FUNCTION = 2;
public static final int MESSAGE_TYPE_TITLE = 2;
private Constants() {
}
} }

View File

@ -1,16 +1,17 @@
package com.kaixed.kchat.utils; package com.kaixed.kchat.utils
import static com.kaixed.kchat.utils.Constants.MMKV_COMMON_DATA; import com.kaixed.kchat.utils.Constants.MMKV_COMMON_DATA
import com.tencent.mmkv.MMKV
import com.tencent.mmkv.MMKV;
/** /**
* @Author: kaixed * @Author: kaixed
* @Date: 2024/8/18 13:18 * @Date: 2024/10/24 22:04
*/ */
public class ConstantsUtil { class ConstantsUtil {
public static int getKeyboardHeight() {
return MMKV.mmkvWithID(MMKV_COMMON_DATA) companion object {
.getInt("keyboardHeight", 200); fun getKeyboardHeight(): Int = MMKV.mmkvWithID(MMKV_COMMON_DATA)
.getInt("keyboardHeight", 200)
} }
} }

View File

@ -1,21 +1,15 @@
package com.kaixed.kchat.utils; package com.kaixed.kchat.utils
import android.content.Context; import android.content.Context
import android.util.DisplayMetrics;
import android.util.TypedValue;
import android.view.View;
/** /**
* @author hui * @Author: kaixed
* @Date: 2024/10/24 22:07
*/ */
public class DensityUtil { object DensityUtil {
private DensityUtil() { // 防止实例化,使用 object 即单例
// 私有化构造方法,防止实例化 fun dpToPx(mContext: Context, dp: Int): Int =
} (mContext.resources.displayMetrics.density * dp).toInt()
public static int dpToPx(Context mContext, int dp) {
return (int) (mContext.getResources().getDisplayMetrics().density * dp);
}
} }

View File

@ -1,18 +1,16 @@
package com.kaixed.kchat.utils; package com.kaixed.kchat.utils
import static com.kaixed.kchat.utils.DensityUtil.dpToPx; import android.graphics.drawable.GradientDrawable
import android.graphics.drawable.GradientDrawable;
/** /**
* @Author: kaixed * @Author: kaixed
* @Date: 2024/8/14 19:22 * @Date: 2024/10/24 22:10
*/ */
public class DrawableUtil { object DrawableUtil {
public static GradientDrawable createDrawable(Integer color, int radius) { fun createDrawable(color: Int?, radius: Int): GradientDrawable {
GradientDrawable gradientDrawable = new GradientDrawable(); val gradientDrawable = GradientDrawable()
gradientDrawable.setCornerRadius(radius); gradientDrawable.cornerRadius = radius.toFloat()
gradientDrawable.setColor(color); gradientDrawable.setColor(color!!)
return gradientDrawable; return gradientDrawable
} }
} }

View File

@ -1,78 +1,59 @@
package com.kaixed.kchat.utils; package com.kaixed.kchat.utils
import android.content.Context
import android.content.Context; import android.text.Editable
import android.graphics.drawable.Drawable; import android.text.SpannableString
import android.text.Editable; import android.text.Spanned
import android.text.SpannableString; import androidx.core.content.res.ResourcesCompat
import android.text.Spanned; import com.kaixed.kchat.R
import android.text.style.ImageSpan; import java.util.regex.Pattern
import androidx.core.content.res.ResourcesCompat;
import com.kaixed.kchat.R;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/** /**
* @Author: kaixed * @Author: kaixed
* @Date: 2024/5/30 19:47 * @Date: 2024/10/24 22:12
*/ */
public class ImageSpanUtil {
private static Map<String, Integer> emojiMap = new HashMap<>(); object ImageSpanUtil {
private static final ImageSpanUtil INSTANCE = new ImageSpanUtil();
private ImageSpanUtil() { private val emojiMap: MutableMap<String, Int> = hashMapOf("[委屈]" to R.drawable.emoji)
emojiMap.put("[委屈]", R.drawable.emoji);
}
public ImageSpanUtil getInstance() { fun setEmojiSpan(context: Context, text: String, textSize: Int): SpannableString {
return INSTANCE; val spannableString = SpannableString(text)
} val regexPattern = "\\[.*?\\]"
public static SpannableString setEmojiSpan(Context context, String text, int textSize) { val pattern = Pattern.compile(regexPattern)
SpannableString spannableString = new SpannableString(text); val matcher = pattern.matcher(text)
String regexPattern = "\\[.*?\\]";
Pattern pattern = Pattern.compile(regexPattern);
Matcher matcher = pattern.matcher(text);
while (matcher.find()) { while (matcher.find()) {
// 获取匹配的起始和结束位置 // 获取匹配的起始和结束位置
int start = matcher.start(); val start = matcher.start()
int end = matcher.end(); val end = matcher.end()
if (emojiMap.containsKey(matcher.group())) { val emojiResId = emojiMap[matcher.group()]
Drawable drawable = ResourcesCompat.getDrawable(context.getResources(), emojiMap.get(matcher.group()), null); if (emojiResId != null) {
assert drawable != null; val drawable = ResourcesCompat.getDrawable(context.resources, emojiResId, null)
int newSize = (int) (textSize * 1.2); drawable?.let {
drawable.setBounds(0, 0, newSize, newSize); val newSize = (textSize * 1.2).toInt()
CenteredImageSpan centeredImageSpan = new CenteredImageSpan(drawable); it.setBounds(0, 0, newSize, newSize)
spannableString.setSpan(centeredImageSpan, start, end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); val centeredImageSpan = CenteredImageSpan(it)
spannableString.setSpan(centeredImageSpan, start, end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE)
}
} }
} }
return spannableString; return spannableString
} }
public static void insertEmoji(Context context, Editable editable, int textSize, String emojiStr, int index) { fun insertEmoji(context: Context, editable: Editable, textSize: Int, emojiStr: String, index: Int) {
// 插入表情符号到当前光标位置 // 插入表情符号到当前光标位置
editable.insert(index, emojiStr); editable.insert(index, emojiStr)
// 创建表情符号的ImageSpan // 创建表情符号的ImageSpan
if (emojiMap.containsKey(emojiStr)) { val emojiResId = emojiMap[emojiStr]
Drawable drawable = ResourcesCompat.getDrawable(context.getResources(), emojiMap.get(emojiStr), null); if (emojiResId != null) {
if (drawable != null) { val drawable = ResourcesCompat.getDrawable(context.resources, emojiResId, null)
int newSize = (int) (textSize * 1.2); drawable?.let {
drawable.setBounds(0, 0, newSize, newSize); val newSize = (textSize * 1.2).toInt()
CenteredImageSpan centeredImageSpan = new CenteredImageSpan(drawable); it.setBounds(0, 0, newSize, newSize)
// ImageSpan imageSpan = new ImageSpan(drawable, ImageSpan.ALIGN_CENTER); val centeredImageSpan = CenteredImageSpan(it)
// 应用ImageSpan到Editable对象 editable.setSpan(centeredImageSpan, index, index + emojiStr.length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
editable.setSpan(centeredImageSpan, index, index + emojiStr.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
} }
} }
} }
} }

View File

@ -1,55 +0,0 @@
package com.kaixed.kchat.utils;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.renderscript.Allocation;
import android.renderscript.Element;
import android.renderscript.RenderScript;
import android.renderscript.ScriptIntrinsicBlur;
public class ImageUtil {
public static Bitmap createRoundedBitmap(Bitmap bitmap, float radius) {
Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(output);
final Paint paint = new Paint();
final RectF rectF = new RectF(0, 0, bitmap.getWidth(), bitmap.getHeight());
paint.setAntiAlias(true);
canvas.drawRoundRect(rectF, radius, radius, paint);
paint.setXfermode(new android.graphics.PorterDuffXfermode(android.graphics.PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(bitmap, 0, 0, paint);
return output;
}
public static Bitmap blurBitmap(Context context, Bitmap bitmap, float radius) {
Bitmap output = Bitmap.createBitmap(bitmap);
RenderScript rs = RenderScript.create(context);
Allocation input = Allocation.createFromBitmap(rs, bitmap);
Allocation outputAlloc = Allocation.createTyped(rs, input.getType());
ScriptIntrinsicBlur blur = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));
blur.setRadius(radius);
blur.setInput(input);
blur.forEach(outputAlloc);
outputAlloc.copyTo(output);
rs.destroy();
return output;
}
public static Bitmap addBlurredRoundedBackground(Context context, Bitmap original, float radius, float blurRadius) {
Bitmap roundedBitmap = createRoundedBitmap(original, radius);
Bitmap blurredBitmap = blurBitmap(context, roundedBitmap, blurRadius);
return blurredBitmap;
}
}

View File

@ -36,7 +36,6 @@ import com.kaixed.kchat.database.entity.Messages;
import com.kaixed.kchat.database.entity.Messages_; import com.kaixed.kchat.database.entity.Messages_;
import com.kaixed.kchat.databinding.ActivityChatBinding; import com.kaixed.kchat.databinding.ActivityChatBinding;
import com.kaixed.kchat.service.WebSocketService; import com.kaixed.kchat.service.WebSocketService;
import com.kaixed.kchat.utils.ConstantsUtil;
import com.kaixed.kchat.utils.ImageSpanUtil; import com.kaixed.kchat.utils.ImageSpanUtil;
import com.kaixed.kchat.view.adapter.ChatAdapter; import com.kaixed.kchat.view.adapter.ChatAdapter;
import com.kaixed.kchat.view.adapter.EmojiAdapter; import com.kaixed.kchat.view.adapter.EmojiAdapter;
@ -54,6 +53,8 @@ import io.objectbox.Box;
import io.objectbox.query.Query; import io.objectbox.query.Query;
import io.objectbox.query.QueryBuilder; import io.objectbox.query.QueryBuilder;
import com.kaixed.kchat.utils.ConstantsUtil;
/** /**
* @author hui * @author hui
*/ */
@ -367,7 +368,7 @@ public class ChatActivity extends AppCompatActivity implements OnItemClickListen
// 获取将要插入的表情符号 // 获取将要插入的表情符号
String emoji = strings.get(position); String emoji = strings.get(position);
// 使用 ImageSpanUtil 插入表情符号 // 使用 ImageSpanUtil 插入表情符号
ImageSpanUtil.insertEmoji(mContext, editable, (int) binding.etInput.getTextSize(), emoji, index); ImageSpanUtil.INSTANCE.insertEmoji(mContext, editable, (int) binding.etInput.getTextSize(), emoji, index);
// 设置新的光标位置 // 设置新的光标位置
binding.etInput.setSelection(index + emoji.length()); binding.etInput.setSelection(index + emoji.length());
}); });
@ -394,7 +395,7 @@ public class ChatActivity extends AppCompatActivity implements OnItemClickListen
username = UserManager.INSTANCE.getUsername(); username = UserManager.INSTANCE.getUsername();
Intent intent = getIntent(); Intent intent = getIntent();
friendId = intent.getStringExtra("friendId"); friendId = intent.getStringExtra("friendId");
softKeyboardHeight = ConstantsUtil.getKeyboardHeight(); softKeyboardHeight = ConstantsUtil.Companion.getKeyboardHeight();
} }

View File

@ -1,22 +1,11 @@
package com.kaixed.kchat.view.activity; package com.kaixed.kchat.view.activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.RenderEffect;
import android.graphics.Shader;
import android.graphics.drawable.GradientDrawable;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import androidx.activity.EdgeToEdge; import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import com.kaixed.kchat.R;
import com.kaixed.kchat.databinding.ActivityContactsDetailBinding; import com.kaixed.kchat.databinding.ActivityContactsDetailBinding;
import com.kaixed.kchat.utils.ImageUtil;
import java.util.Objects;
public class ContactsDetailActivity extends AppCompatActivity { public class ContactsDetailActivity extends AppCompatActivity {

View File

@ -3,8 +3,6 @@ package com.kaixed.kchat.view.activity;
import static com.kaixed.kchat.utils.Constants.MMKV_COMMON_DATA; import static com.kaixed.kchat.utils.Constants.MMKV_COMMON_DATA;
import static com.kaixed.kchat.utils.Constants.MMKV_USER_SESSION; import static com.kaixed.kchat.utils.Constants.MMKV_USER_SESSION;
import static com.kaixed.kchat.utils.Constants.USER_LOGIN_STATUS; import static com.kaixed.kchat.utils.Constants.USER_LOGIN_STATUS;
import static com.kaixed.kchat.utils.DensityUtil.dpToPx;
import static com.kaixed.kchat.utils.DrawableUtil.createDrawable;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
@ -23,6 +21,8 @@ import androidx.lifecycle.ViewModelProvider;
import com.kaixed.kchat.R; import com.kaixed.kchat.R;
import com.kaixed.kchat.databinding.ActivityLoginBinding; import com.kaixed.kchat.databinding.ActivityLoginBinding;
import com.kaixed.kchat.utils.DensityUtil;
import com.kaixed.kchat.utils.DrawableUtil;
import com.kaixed.kchat.viewmodel.LoginViewModel; import com.kaixed.kchat.viewmodel.LoginViewModel;
import com.tencent.mmkv.MMKV; import com.tencent.mmkv.MMKV;
@ -123,10 +123,10 @@ public class LoginActivity extends AppCompatActivity {
if (s.length() != 0) { if (s.length() != 0) {
if (binding.etUsername.getText().length() != 0 && binding.etPassword.getText().length() != 0) { if (binding.etUsername.getText().length() != 0 && binding.etPassword.getText().length() != 0) {
binding.tvLogin.setTextColor(ContextCompat.getColor(mContext, R.color.white)); binding.tvLogin.setTextColor(ContextCompat.getColor(mContext, R.color.white));
binding.tvLogin.setBackground(createDrawable(ContextCompat.getColor(mContext, R.color.green), dpToPx(mContext, 8))); binding.tvLogin.setBackground(DrawableUtil.INSTANCE.createDrawable(ContextCompat.getColor(mContext, R.color.green), DensityUtil.INSTANCE.dpToPx(mContext, 8)));
} else { } else {
binding.tvLogin.setTextColor(Color.parseColor("#B4B4B4")); binding.tvLogin.setTextColor(Color.parseColor("#B4B4B4"));
binding.tvLogin.setBackground(createDrawable(Color.parseColor("#E1E1E1"), dpToPx(mContext, 8))); binding.tvLogin.setBackground(DrawableUtil.INSTANCE.createDrawable(Color.parseColor("#E1E1E1"), DensityUtil.INSTANCE.dpToPx(mContext, 8)));
} }
} }
} }

View File

@ -1,222 +0,0 @@
//package com.kaixed.kchat.view.adapter;
//
//import static com.kaixed.kchat.utils.Constants.TYPE_ITEM_MINE;
//import static com.kaixed.kchat.utils.Constants.TYPE_ITEM_OTHER;
//import static com.kaixed.kchat.utils.Constants.TYPE_MESSAGE_WITHDRAW;
//
//import android.annotation.SuppressLint;
//import android.content.Context;
//import android.graphics.drawable.ColorDrawable;
//import android.text.SpannableString;
//import android.view.LayoutInflater;
//import android.view.View;
//import android.view.ViewGroup;
//import android.widget.ImageView;
//import android.widget.PopupWindow;
//import android.widget.TextView;
//
//import androidx.annotation.NonNull;
//import androidx.recyclerview.widget.RecyclerView;
//import androidx.window.layout.WindowMetrics;
//import androidx.window.layout.WindowMetricsCalculator;
//
//import com.kaixed.kchat.R;
//import com.kaixed.kchat.database.entity.Messages;
//import com.kaixed.kchat.database.ObjectBox;
//import com.kaixed.kchat.database.UserManager;
//import com.kaixed.kchat.utils.ImageSpanUtil;
//
//import java.util.LinkedList;
//
//import io.objectbox.Box;
//
///**
// * @Author: kaixed
// * @Date: 2024/5/4 22:48
// */
//public class ChatAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
// private final LinkedList<Messages> messages;
// private final Context mContext;
//
// public ChatAdapter(Context mContext, LinkedList<Messages> messages) {
// this.messages = messages;
// this.mContext = mContext;
// }
//
// @NonNull
// @Override
// public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
// RecyclerView.ViewHolder viewHolder;
// LayoutInflater inflater = LayoutInflater.from(parent.getContext());
// if (viewType == TYPE_ITEM_MINE) {
// View view = inflater.inflate(R.layout.chat_recycle_item_mine, parent, false);
// viewHolder = new MineViewHolder(view);
// } else if (viewType == TYPE_ITEM_OTHER) {
// View view = inflater.inflate(R.layout.chat_recycle_item_other, parent, false);
// viewHolder = new OtherViewHolder(view);
// } else {
// View view = inflater.inflate(R.layout.chat_recycle_item_withdraw, parent, false);
// viewHolder = new WithdrawViewHolder(view);
// }
// return viewHolder;
// }
//
// @Override
// public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
//
// Messages singleMessage = messages.get(position);
// if (singleMessage == null) {
// return;
// }
// if (holder.getItemViewType() == TYPE_ITEM_MINE) {
// MineViewHolder mineViewHolder = (MineViewHolder) holder;
// SpannableString spannableString = ImageSpanUtil.setEmojiSpan(mContext, singleMessage.getContent(), (int) mineViewHolder.mTvContent.getTextSize());
//
// mineViewHolder.mTvContent.setText(spannableString);
//
// mineViewHolder.mTvContent.setOnLongClickListener(v -> {
// showPopupWindow(v, position);
// return true;
// });
//
// } else if (holder.getItemViewType() == TYPE_ITEM_OTHER) {
// OtherViewHolder otherViewHolder = (OtherViewHolder) holder;
//
// SpannableString spannableString = ImageSpanUtil.setEmojiSpan(mContext, singleMessage.getContent(), (int) otherViewHolder.mTvContent.getTextSize());
//
// otherViewHolder.mTvContent.setText(spannableString);
// otherViewHolder.mTvContent.setOnLongClickListener(v -> {
// showPopupWindow(v, position);
// return true;
// });
// } else {
// WithdrawViewHolder mineViewHolder = (WithdrawViewHolder) holder;
// mineViewHolder.bindData(singleMessage.getSenderId());
// }
//
// }
//
// /**
// * 用来显示消息长按弹窗
// */
// private void showPopupWindow(@NonNull View textView, int position) {
// @SuppressLint("InflateParams") View popupView = LayoutInflater.from(mContext).inflate(R.layout.popwindows, null);
//
// PopupWindow popupWindow = new PopupWindow(popupView,
// ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
//
// popupWindow.setFocusable(true);
// popupWindow.setBackgroundDrawable(new ColorDrawable());
//
//
// popupView.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
// int popupWidth = popupView.getMeasuredWidth();
// int popupHeight = popupView.getMeasuredHeight();
//
// int anchorWidth = textView.getWidth();
// int anchorHeight = textView.getHeight();
// int offsetX = (anchorWidth - popupWidth) / 2;
//
// int offset = 15;
//
// ImageView mIvArrowUp = popupView.findViewById(R.id.iv_arrow_up);
// ImageView mIvArrowDown = popupView.findViewById(R.id.iv_arrow_down);
//
// if (getDistanceFromTop(textView) > anchorHeight) {
// popupWindow.showAsDropDown(textView, offsetX, -offset - anchorHeight - popupHeight);
// mIvArrowUp.setVisibility(View.GONE);
// mIvArrowDown.setVisibility(View.VISIBLE);
// } else {
// popupWindow.showAsDropDown(textView, offsetX, 10);
// mIvArrowUp.setVisibility(View.VISIBLE);
// mIvArrowDown.setVisibility(View.GONE);
// }
//
// ImageView mIvWithdraw = popupView.findViewById(R.id.iv_withdraw);
//
// mIvWithdraw.setOnClickListener(v -> {
// messages.get(position).setStatus("withdraw");
// updateDb(messages.get(position));
// notifyItemChanged(position);
//
// popupWindow.dismiss();
// });
// }
//
// private void updateDb(Messages messages) {
// Box<Messages> messagesBox = ObjectBox.get().boxFor(Messages.class);
// messagesBox.put(messages);
// }
//
// private int getDistanceFromTop(View view) {
// int[] location = new int[2];
// view.getLocationOnScreen(location);
// //location[0]指的是横向距离
// return location[1];
// }
//
// private int getDistanceFromBottom(@NonNull View view) {
// // 获取控件在屏幕上的位置
// int[] location = new int[2];
// view.getLocationOnScreen(location);
// // 获取屏幕高度
// WindowMetrics windowMetrics = WindowMetricsCalculator.getOrCreate().computeCurrentWindowMetrics(mContext);
// int screenHeight = windowMetrics.getBounds().height();
// // 计算控件底部到屏幕底部的距离
// int viewBottom = location[1] + view.getHeight();
// return screenHeight - viewBottom;
// }
//
// @Override
// public int getItemViewType(int position) {
// String curUser = UserManager.getInstance().getUsername();
// if ("withdraw".equals(messages.get(position).getStatus())) {
// return TYPE_MESSAGE_WITHDRAW;
// }
// return curUser.equals(messages.get(position).getSenderId()) ? TYPE_ITEM_MINE : TYPE_ITEM_OTHER;
// }
//
// @Override
// public int getItemCount() {
// return messages.isEmpty() ? 0 : messages.size();
// }
//
// static class MineViewHolder extends RecyclerView.ViewHolder {
// private final TextView mTvContent;
//
// public MineViewHolder(@NonNull View itemView) {
// super(itemView);
// mTvContent = itemView.findViewById(R.id.tv_mine_content);
// }
//
// private void bindData(Messages singleMessage) {
// mTvContent.setText(singleMessage.getContent());
// }
// }
//
// static class OtherViewHolder extends RecyclerView.ViewHolder {
// private final TextView mTvContent;
//
// public OtherViewHolder(@NonNull View itemView) {
// super(itemView);
// mTvContent = itemView.findViewById(R.id.tv_other_content);
// }
//
// private void bindData(Messages singleMessage) {
// mTvContent.setText(singleMessage.getContent());
// }
// }
//
// static class WithdrawViewHolder extends RecyclerView.ViewHolder {
// private final TextView mTvNickname;
//
// public WithdrawViewHolder(@NonNull View itemView) {
// super(itemView);
// mTvNickname = itemView.findViewById(R.id.tv_user_nickname);
// }
//
// private void bindData(String nickname) {
// mTvNickname.setText(nickname);
// }
// }
//}