This commit is contained in:
2025-11-12 16:40:26 +08:00
parent d4721faa42
commit 8013268816
332 changed files with 12369 additions and 522 deletions

View File

@@ -0,0 +1,58 @@
package com.example.modulevocal.activity.ui.main;
import static androidx.lifecycle.Transformations.map;
import androidx.arch.core.util.Function;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
import com.xscm.moduleutil.bean.GiftUserWallBean;
import java.util.List;
public class PageViewModel extends ViewModel {
private MutableLiveData<Integer> mIndex = new MutableLiveData<>();
private LiveData<String> mText = map(mIndex, input -> "Hello world from section: " + input);
private MutableLiveData<List<GiftUserWallBean.GiftWallBean>> mLiangDataList = new MutableLiveData<>();
private MutableLiveData<List<GiftUserWallBean.GiftWallBean>> mNoLiangDataList = new MutableLiveData<>();
// 根据索引返回不同的数据集合
private LiveData<List<GiftUserWallBean.GiftWallBean>> mDataList = map(mIndex, input -> {
if (input == 1) {
return mLiangDataList.getValue();
} else if (input == 2) {
return mNoLiangDataList.getValue();
}
return null;
});
public void setIndex(int index) {
mIndex.setValue(index);
}
public LiveData<String> getText() {
return mText;
}
// 获取根据索引动态变化的数据集合
public LiveData<List<GiftUserWallBean.GiftWallBean>> getDataList() {
return mDataList;
}
// 设置liang数据集合
public void setLiangDataList(List<GiftUserWallBean.GiftWallBean> dataList) {
for (GiftUserWallBean.GiftWallBean bean : dataList) {
bean.set_liang(true);
}
mLiangDataList.setValue(dataList);
}
// 设置no_liang数据集合
public void setNoLiangDataList(List<GiftUserWallBean.GiftWallBean> dataList) {
for (GiftUserWallBean.GiftWallBean bean : dataList) {
bean.set_liang(false);
}
mNoLiangDataList.setValue(dataList);
}
}

View File

@@ -0,0 +1,93 @@
package com.example.modulevocal.activity;
import android.annotation.SuppressLint;
import android.graphics.Color;
import android.util.TypedValue;
import android.view.View;
import android.widget.TextView;
import androidx.viewpager2.widget.ViewPager2;
import com.example.modulevocal.R;
import com.example.modulevocal.activity.ui.main.GiftWallConacts;
import com.example.modulevocal.activity.ui.main.GiftWallPresenter;
import com.google.android.material.tabs.TabLayout;
import androidx.viewpager.widget.ViewPager;
import com.example.modulevocal.activity.ui.main.SectionsPagerAdapter;
import com.example.modulevocal.databinding.ActivityGiftWallBinding;
import com.google.android.material.tabs.TabLayoutMediator;
import com.xscm.moduleutil.activity.BaseMvpActivity;
import com.xscm.moduleutil.bean.CombinedGiftBean;
import com.xscm.moduleutil.bean.GiftUserWallBean;
import com.xscm.moduleutil.bean.RoomTypeModel;
import com.xscm.moduleutil.utils.SpUtil;
/**
* 礼物墙
*/
public class GiftWallActivity extends BaseMvpActivity<GiftWallPresenter, ActivityGiftWallBinding> implements GiftWallConacts.View {
SectionsPagerAdapter sectionsPagerAdapter;
@Override
protected void initData() {
mBinding.topBar.setTitle("礼物墙");
mBinding.topBar.setColor(getResources().getColor(R.color.white));
MvpPre.giftWall(SpUtil.getUserId()+"");
}
// 在获取到数据后调用此方法初始化 ViewPager
private void setupViewPagerWithData(GiftUserWallBean data) {
sectionsPagerAdapter = new SectionsPagerAdapter(this, data);
ViewPager2 viewPager = mBinding.viewPager;
viewPager.setAdapter(sectionsPagerAdapter);
TabLayout tabs = mBinding.tabs;
// TabLayout 需要手动关联
new TabLayoutMediator(mBinding.tabs, mBinding.viewPager,
(tab, position) -> tab.setText(sectionsPagerAdapter.getPageTitle(position))
).attach();
// 设置选中和未选中的文字颜色及大小
tabs.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
View customView = tab.getCustomView();
if (customView instanceof TextView textView) {
textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);
textView.setTextColor(getResources().getColor(android.R.color.white));
customView.setBackgroundResource(com.xscm.moduleutil.R.drawable.tab_indicator);
}
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
View customView = tab.getCustomView();
if (customView instanceof TextView textView) {
textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14);
textView.setTextColor(Color.parseColor("#ffffff"));
customView.setBackgroundResource(com.xscm.moduleutil.R.drawable.tab_unselected_background);
}
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
tabs.selectTab(tabs.getTabAt(0));
}
@Override
protected int getLayoutId() {
return R.layout.activity_gift_wall;
}
@Override
protected GiftWallPresenter bindPresenter() {
return new GiftWallPresenter(this, this);
}
@Override
public void setGiftWall(GiftUserWallBean data) {
// 添加点亮的礼物
// 初始化 ViewPager 和 TabLayout
setupViewPagerWithData(data);
}
}

View File

@@ -0,0 +1,202 @@
package com.example.modulevocal.activity;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.graphics.LinearGradient;
import android.graphics.Shader;
import android.os.Build;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewTreeObserver;
import android.widget.GridView;
import android.widget.TextView;
import androidx.activity.EdgeToEdge;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import androidx.viewpager2.widget.ViewPager2;
import com.example.modulevocal.R;
import com.example.modulevocal.adapter.GridNobleAdapter;
import com.example.modulevocal.adapter.NobliityBannerAdapter;
import com.example.modulevocal.conacts.NobleTitleConacts;
import com.example.modulevocal.databinding.ActivityNobleDetailsBinding;
import com.example.modulevocal.presenter.NobleTitlePresenter;
import com.xscm.moduleutil.activity.BaseMvpActivity;
import com.xscm.moduleutil.base.CommonAppContext;
import com.xscm.moduleutil.bean.*;
import com.xscm.moduleutil.dialog.RoomAuctionWebViewDialog;
import com.zhpan.bannerview.BannerViewPager;
import com.zhpan.bannerview.constants.PageStyle;
import java.util.List;
import static android.view.View.GONE;
/**
* @Description: 这是爵位详情方案
* @Author: qx
* @CreateDate: 2022/3/23 10:05
*/
public class NobleDetailsActivity extends BaseMvpActivity<NobleTitlePresenter, ActivityNobleDetailsBinding> implements NobleTitleConacts.View {
NobliityBannerAdapter mAdapter;
GridView gridView;
GridNobleAdapter mGiftWallAdapter;
private String lid="";
@Override
protected void initView() {
super.initView();
mBinding.ivBack.setColorFilter(getResources().getColor(R.color.white));
mBinding.ivBack.setOnClickListener(v -> finish());
mBinding.ivIntent.setOnClickListener(v -> {//爵位规则
Bundle bundle = new Bundle();
bundle.putString("url", CommonAppContext.getInstance().getCurrentEnvironment().getServerUrl() + "api/Page/page_show?id=29");
RoomAuctionWebViewDialog dialog = new RoomAuctionWebViewDialog(this, bundle);
dialog.show();
});
gridView = mBinding.gridView;
mGiftWallAdapter=new GridNobleAdapter();
mBinding.imLjkt.setOnClickListener(v -> {
Intent intent = new Intent(this, NoblePaymentActivity.class);
Bundle bundle = new Bundle();
bundle.putString("lid",lid);
intent.putExtras( bundle);
startActivity(intent);
});
}
@Override
protected void initData() {
lid=getIntent().getStringExtra("lid");
if (lid==null){
lid="";
}
MvpPre.getNobilityList();
}
@Override
protected int getLayoutId() {
return R.layout.activity_noble_details;
}
@Override
protected NobleTitlePresenter bindPresenter() {
return new NobleTitlePresenter(this, this);
}
@Override
public void getNobilityDetail(NobilitDeatils nobilitDeatils) {
}
int index = 0;
@RequiresApi(api = Build.VERSION_CODES.O)
@Override
public void getNobilityList(List<NobilitList> nobilitLists) {
if (nobilitLists==null){
return;
}
for (int i=0; i < nobilitLists.size(); i++){
if (lid.equals(nobilitLists.get(i).getLid()+"")){
index = i;
}
}
mAdapter = new NobliityBannerAdapter();
mBinding.banner
.setAdapter(mAdapter)
.setAutoPlay(false)
.setIndicatorVisibility(GONE)
.setPageStyle(PageStyle.MULTI_PAGE_OVERLAP, 0.6f)
.setRevealWidth(200)
.setCanLoop(false)
.create();
mBinding.banner.create(nobilitLists); // 刷新数据并启动自动播放
mBinding.banner.setCurrentItem(index);
mAdapter.setmCurrentPosition( index);
mBinding.banner.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
super.onPageScrolled(position, positionOffset, positionOffsetPixels);
updateNobleInfo(nobilitLists.get( position), position);
}
@Override
public void onPageSelected(int position) {
super.onPageSelected(position);
}
@Override
public void onPageScrollStateChanged(int state) {
super.onPageScrollStateChanged(state);
}
});
updateNobleInfo(nobilitLists.get(index), index);
}
@Override
public void bindType(BindType bindType) {
}
@Override
public void appPay(AppPay appPay) {
}
@Override
public void getNobilityPrice(NobilityPrice nobilityPrice) {
}
@SuppressLint("SetTextI18n")
private void updateNobleInfo(NobilitList nobilitLists, int position) {
mBinding.tvNobleLv.setText(nobilitLists.getName());
applyGradientToTextView(mBinding.tvNobleLv);
mBinding.tvTq.setText("专属特权(" + nobilitLists.getPower().getCount_str()+")");
mBinding.tvLvTis.setText(nobilitLists.getName() + "专属 ¥");
mBinding.tvNobleMob.setText(nobilitLists.getPay_price()+" / "+nobilitLists.getDay()+"");
gridView.setAdapter(mGiftWallAdapter);
lid=nobilitLists.getLid()+"";
// 观察数据变化并更新 GridView
mGiftWallAdapter.updateData(nobilitLists.getPower().getList());
if (position>=index){
if (position==index){
mBinding.imLjkt.setImageResource(com.xscm.moduleutil.R.mipmap.noble_xf);
}else {
mBinding.imLjkt.setImageResource(com.xscm.moduleutil.R.mipmap.noble_ljsj);
}
mBinding.imLjkt.setClickable( true);
}else {
mBinding.imLjkt.setImageResource(com.xscm.moduleutil.R.mipmap.noble_h_kt);
mBinding.imLjkt.setClickable( false);
}
}
private void applyGradientToTextView(TextView textView) {
ViewTreeObserver vto = textView.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
textView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
int width = textView.getWidth();
if (width > 0) {
LinearGradient gradient = new LinearGradient(
0, 0, width, 0,
new int[]{0xFFF4C07C, 0xFFFFFFFF, 0xFFF4C07C},
new float[]{0f, 0.5f, 1f},
Shader.TileMode.CLAMP
);
textView.getPaint().setShader(gradient);
textView.invalidate();
}
}
});
}
}

View File

@@ -0,0 +1,274 @@
package com.example.modulevocal.activity;
import android.content.Intent;
import android.graphics.Paint;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.alibaba.android.arouter.launcher.ARouter;
import com.alibaba.fastjson.JSON;
import com.example.modulevocal.R;
import com.example.modulevocal.adapter.NoblePrivilegeAdapter;
import com.example.modulevocal.conacts.NobleTitleConacts;
import com.example.modulevocal.databinding.ActivityNoblePaymentBinding;
import com.example.modulevocal.presenter.NobleTitlePresenter;
import com.hjq.toast.ToastUtils;
import com.tencent.mm.opensdk.openapi.IWXAPI;
import com.tencent.mm.opensdk.openapi.WXAPIFactory;
import com.xscm.moduleutil.activity.BaseMvpActivity;
import com.xscm.moduleutil.adapter.PayMethodAdapter;
import com.xscm.moduleutil.base.CommonAppContext;
import com.xscm.moduleutil.bean.*;
import com.xscm.moduleutil.color.ThemeableDrawableUtils;
import com.xscm.moduleutil.dialog.RoomAuctionWebViewDialog;
import com.xscm.moduleutil.event.PayEvent;
import com.xscm.moduleutil.utils.*;
import com.xscm.moduleutil.widget.PaymentUtil;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.lang.reflect.Field;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import static android.view.View.GONE;
import static android.view.View.VISIBLE;
/**
* @Description: 这是爵位支付方案
* @Author: qx
* @CreateDate: 2022/3/23 10:05
*/
public class NoblePaymentActivity extends BaseMvpActivity<NobleTitlePresenter, ActivityNoblePaymentBinding> implements NobleTitleConacts.View{
private PayMethodAdapter bindTypeAdapter;
private BindType.AllData selectedItem;
private String lid;
private String money;
private String name;
private String yxq;
private String imNoble2;
private List<NobilityPrice.PowerItem> powerItems=new ArrayList<>();
@Override
protected void initData() {
mBinding.ivBack.setOnClickListener(v -> finish());
mBinding.ivIntent.setOnClickListener(v -> {//爵位规则
Bundle bundle = new Bundle();
bundle.putString("url", CommonAppContext.getInstance().getCurrentEnvironment().getServerUrl() + "api/Page/page_show?id=29");
RoomAuctionWebViewDialog dialog = new RoomAuctionWebViewDialog(this, bundle);
dialog.show(); });
mBinding.tvYsxy.setOnClickListener(this::onClick);
mBinding.recycleView1.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
bindTypeAdapter = new PayMethodAdapter(com.xscm.moduleutil.R.layout.item_bind_type);
mBinding.recycleView1.setAdapter(bindTypeAdapter);
bindTypeAdapter.setOnItemClickListener((adapter, view, position) -> {
bindTypeAdapter.setSelectedPosition(position);
// 获取当前选中的数据
selectedItem = bindTypeAdapter.getItem(position);
// 可以在这里处理选中逻辑,比如保存到变量或触发支付
});
ThemeableDrawableUtils.setThemeableRoundedBackground(mBinding.tvPayment, ColorManager.getInstance().getPrimaryColorInt(), 53);
mBinding.tvPayment.setTextColor(ColorManager.getInstance().getButtonColorInt());
mBinding.tvPayment.setOnClickListener(this::onClick);
}
@Override
protected void onResume() {
super.onResume();
lid=getIntent().getStringExtra("lid");
MvpPre.getNobilityPrice(lid);
MvpPre.bindType(SpUtil.getUserId() + "");
}
private void onClick(View view) {
int id = view.getId();
if (id== R.id.tv_ysxy) {
ARouter.getInstance().build(ARouteConstants.H5).withString("url", CommonAppContext.getInstance().getCurrentEnvironment().getServerUrl()+"/api/Page/page_show?id=30").withString("title", "爵位服务协议").navigation();
}else if (id== R.id.tv_payment){
if (!mBinding.cbPrivacy.isChecked()) {
ToastUtils.show("请先勾选服务条款");
return;
}
MvpPre.appPay(SpUtil.getUserId() + "", money, selectedItem.getType(),lid);
}
}
@Override
protected int getLayoutId() {
return R.layout.activity_noble_payment;
}
@Override
protected NobleTitlePresenter bindPresenter() {
return new NobleTitlePresenter(this, this);
}
@Override
public void getNobilityDetail(NobilitDeatils nobilitDeatils) {
}
@Override
public void getNobilityList(List<NobilitList> nobilitLists) {
}
@Override
public void bindType(BindType bindType) {
List<BindType.AllData> allData = new ArrayList<>();
if (bindType.getAli().getIs_pay_open().equals("1")) {
allData.add(bindType.getAli());
}
if (bindType.getWx().getIs_pay_open().equals("1")) {
allData.add(bindType.getWx());
}
if (bindType.getBank().getIs_pay_open().equals("1")) {
allData.add(bindType.getBank());
}
if (bindType.getAli_tl().getIs_pay_open().equals("1")) {
allData.add(bindType.getAli_tl());
}
if (bindType.getWx_tl().getIs_pay_open().equals("1")) {
allData.add(bindType.getWx_tl());
}
bindTypeAdapter.setNewData(allData);
}
@Override
public void appPay(AppPay appPay) {
if (appPay.getAli()!=null) {
PaymentUtil.payAlipay(this, appPay.getAli());
}else if (appPay.getWx()!=null){
IWXAPI wxapi = WXAPIFactory.createWXAPI(this, CommonAppContext.getInstance().getCurrentEnvironment().getWxAppId());
PaymentUtil.payWxMiniProgram2(wxapi,appPay);
}else if (appPay.getTl()!=null){
if (appPay.getTl().getRemark().equals("5")) {//微信
IWXAPI wxapi = WXAPIFactory.createWXAPI(this, CommonAppContext.getInstance().getCurrentEnvironment().getWxAppId());
try {
String paramString = buildParamString(appPay.getTl());
PaymentUtil.payWxMiniProgramWx(wxapi,paramString);
android.util.Log.d("RequestParams", paramString); // 输出拼接后的参数
} catch (IllegalAccessException e) {
e.printStackTrace();
}
} else if (appPay.getTl().getRemark().equals("4")) {//支付宝
String s= JSON.toJSONString(appPay.getTl());
try {
String query = URLEncoder.encode("payinfo=" + URLEncoder.encode(s, "UTF-8"), "UTF-8");
String url = "alipays://platformapi/startapp?appId=2021001104615521&page=pages/orderDetail/orderDetail&thirdPartSchema="
+ URLEncoder.encode("myziroom://myziroom/", "UTF-8") + "&query=" + query;
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
}
@Override
public void getNobilityPrice(NobilityPrice nobilityPrice) {
if (nobilityPrice==null){
return;
}
name=nobilityPrice.getNobility_name();
yxq=nobilityPrice.getEnd_time();
mBinding.tvLv.setText(nobilityPrice.getNobility_name());
ImageUtils.loadHeadCC(nobilityPrice.getNobility_image(), mBinding.imNoble);
imNoble2=nobilityPrice.getNobility_image();
mBinding.tvTime.setText("有效期:"+nobilityPrice.getDay()+"");
mBinding.tvSjJg.setText(""+nobilityPrice.getPrice());
mBinding.tvHxJg.setText(""+nobilityPrice.getPay_price());
mBinding.tvHxJg.setPaintFlags( mBinding.tvHxJg.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
money=nobilityPrice.getPrice();
NoblePrivilegeAdapter adapter = new NoblePrivilegeAdapter();
adapter.setNewData(nobilityPrice.getPower_list());
mBinding.recycleView2.setLayoutManager(new LinearLayoutManager(this));
// 设置到 RecyclerView
mBinding.recycleView2.setAdapter(adapter);
powerItems=nobilityPrice.getPower_list();
}
public static String buildParamString(Object obj) throws IllegalAccessException {
Class<?> clazz = obj.getClass();
Field[] fields = clazz.getDeclaredFields();
TreeMap<String, String> paramMap = new TreeMap<>();
// 遍历字段并填充 TreeMap
for (Field field : fields) {
field.setAccessible(true); // 允许访问私有字段
Object value = field.get(obj);
if (value != null && !String.valueOf(value).isEmpty()) {
paramMap.put(field.getName(), String.valueOf(value));
}
}
// 使用 StringBuilder 拼接参数字符串
StringBuilder builder = new StringBuilder();
for (Map.Entry<String, String> entry : paramMap.entrySet()) {
if (builder.length() > 0) {
builder.append("&");
}
builder.append(entry.getKey())
.append("=")
.append(entry.getValue());
}
return builder.toString();
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(PayEvent event) {
if (event.getType()==1){
ToastUtils.show("支付成功");
mBinding.cl.setVisibility(GONE);
mBinding.imNoble.setVisibility(GONE);
mBinding.t2.setVisibility(GONE);
mBinding.recycleView1.setVisibility(GONE);
mBinding.tvPayment.setVisibility(GONE);
mBinding.llAgreement.setVisibility(GONE);
mBinding.recycleView2.setVisibility(GONE);
mBinding.tvTs.setVisibility(GONE);
mBinding.tv.setVisibility(GONE);
mBinding.cl2.setVisibility(VISIBLE);
mBinding.tvSucess2.setText("恭喜您已成功开通"+name+"爵位");
mBinding.tv3.setText(name+"特权");
mBinding.tv4.setText("有效期:"+yxq);
mBinding.tvPayment2.setOnClickListener(v -> {
finish();
});
ImageUtils.loadHeadCC(imNoble2, mBinding.imNoble2);
NoblePrivilegeAdapter adapter = new NoblePrivilegeAdapter();
adapter.setNewData(powerItems);
mBinding.recycleView3.setLayoutManager(new LinearLayoutManager(this));
// 设置到 RecyclerView
mBinding.recycleView3.setAdapter(adapter);
}
}
}

View File

@@ -0,0 +1,288 @@
package com.example.modulevocal.activity;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.graphics.LinearGradient;
import android.graphics.Shader;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.view.ViewTreeObserver;
import android.widget.HorizontalScrollView;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import com.alibaba.android.arouter.launcher.ARouter;
import com.example.modulevocal.R;
import com.example.modulevocal.conacts.NobleTitleConacts;
import com.example.modulevocal.databinding.ActivityNobleTitleBinding;
import com.example.modulevocal.presenter.NobleTitlePresenter;
import com.rmondjone.locktableview.LockTableView;
import com.rmondjone.xrecyclerview.ProgressStyle;
import com.rmondjone.xrecyclerview.XRecyclerView;
import com.xscm.moduleutil.activity.BaseMvpActivity;
import com.xscm.moduleutil.activity.IPresenter;
import com.xscm.moduleutil.base.BaseRoomContacts;
import com.xscm.moduleutil.base.CommonAppContext;
import com.xscm.moduleutil.bean.*;
import com.xscm.moduleutil.dialog.RoomAuctionWebViewDialog;
import com.xscm.moduleutil.utils.ARouteConstants;
import com.xscm.moduleutil.utils.ImageUtils;
import com.xscm.moduleutil.utils.TimeUtils;
import java.util.ArrayList;
import java.util.List;
import static android.view.View.GONE;
import static android.view.View.VISIBLE;
/**
* @Description: 爵位展示页面
* @Author: qx
* @Data: 2022/4/18 21:05
*/
public class NobleTitleActivity extends BaseMvpActivity<NobleTitlePresenter, ActivityNobleTitleBinding> implements NobleTitleConacts.View {
private LinearLayout mContentView;
private List<NobilitDeatils.nobilityPowerItem> mNobilityPowerItemList = new ArrayList<>();
private String lid;
@Override
protected void initData() {
MvpPre.getNobilityDetail();
}
@Override
protected void initView() {
super.initView();
mBinding.ivBack.setColorFilter(getResources().getColor(R.color.white));
mBinding.ivBack.setOnClickListener(v -> finish());
mBinding.ivIntent.setOnClickListener(v -> {//爵位规则
Bundle bundle = new Bundle();
bundle.putString("url", CommonAppContext.getInstance().getCurrentEnvironment().getServerUrl() + "api/Page/page_show?id=29");
RoomAuctionWebViewDialog dialog = new RoomAuctionWebViewDialog(this, bundle);
dialog.show(); });
mContentView = mBinding.contentView;
mBinding.imMeNobleStatus.setOnClickListener(this::onClick);
mBinding.imMeNobleXf.setOnClickListener(this::onClick);
mBinding.imSj.setOnClickListener(this::onClick);
}
private void onClick(View view) {
int id = view.getId();
if (id== R.id.im_me_noble_status || id== R.id.im_sj) {
Intent intent = new Intent(this, NobleDetailsActivity.class);
Bundle bundle = new Bundle();
bundle.putString("lid",lid);
intent.putExtras( bundle);
startActivity(intent);
}else if (id== R.id.im_me_noble_xf) {
Intent intent = new Intent(this, NoblePaymentActivity.class);
Bundle bundle = new Bundle();
bundle.putString("lid",lid);
intent.putExtras( bundle);
startActivity(intent);
}
}
@Override
protected int getLayoutId() {
return R.layout.activity_noble_title;
}
@Override
protected NobleTitlePresenter bindPresenter() {
return new NobleTitlePresenter(this, this);
}
private void setmContentView() {
ArrayList<ArrayList<TableCellData>> mTableDatas = new ArrayList<ArrayList<TableCellData>>();
ArrayList<TableCellData> mfristData = new ArrayList<TableCellData>();
for (int i = 0; i < mNobilityPowerItemList.size(); i++) {
TableCellData mTableCellData = new TableCellData();
mTableCellData.setTitle(mNobilityPowerItemList.get(i).getName());
mTableCellData.setColor("");
mfristData.add(mTableCellData); // 添加各爵位名称
}
mTableDatas.add(mfristData); // 只添加一次表头
// 构建每一行的数据
if (!mNobilityPowerItemList.isEmpty()) {
int maxPrivileges = mNobilityPowerItemList.get(0).getNobility_list().size();
// 为每个特权构建一行数据
for (int j = 0; j < maxPrivileges; j++) {
ArrayList<TableCellData> mRowDatas = new ArrayList<TableCellData>();
// 添加特权名称(第一列)
if (j < mNobilityPowerItemList.get(0).getNobility_list().size()) {
TableCellData mTableCellData = new TableCellData();
mTableCellData.setTitle(mNobilityPowerItemList.get(0).getNobility_list().get(j).getName());
mTableCellData.setColor("");
mRowDatas.add(mTableCellData);
} else {
mRowDatas.add(new TableCellData()); // 空白占位
}
// 添加各个爵位对该特权的支持情况
for (int i = 1; i < mNobilityPowerItemList.size(); i++) {
if (j < mNobilityPowerItemList.get(i).getNobility_list().size()) {
NobilitDeatils.nobilityPowerItem nobilityItem = mNobilityPowerItemList.get(i);
NobilitDeatils.nobilityPowerItem.nobilityPowerItem nobilityList = nobilityItem.getNobility_list().get(j);
if ( nobilityList.getId()==2) {
if (nobilityItem.getNick_name_color_name() != null && !nobilityItem.getNick_name_color_name().equals("")) {
TableCellData mTableCellData = new TableCellData();
mTableCellData.setTitle(nobilityItem.getNick_name_color_name());
mTableCellData.setColor(nobilityItem.getNick_name_color());
mRowDatas.add(mTableCellData); // 支持
}
}else {
// 根据 status 显示是否支持
if (nobilityList.getStatus() == 1) {
TableCellData mTableCellData = new TableCellData();
mTableCellData.setTitle("1");
mTableCellData.setColor("");
mRowDatas.add(mTableCellData); // 支持
} else {
TableCellData mTableCellData = new TableCellData();
mTableCellData.setTitle("0");
mTableCellData.setColor("");
mRowDatas.add(mTableCellData); // 不支持
}
}
} else {
mRowDatas.add(new TableCellData()); // 空白占位
}
}
mTableDatas.add(mRowDatas);
}
}
final LockTableView mLockTableView = new LockTableView(this, mContentView, mTableDatas);
mLockTableView.setLockFristColumn(true) //是否锁定第一列
.setLockFristRow(true) //是否锁定第一行
.setMaxColumnWidth(79) //列最大宽度
.setMinColumnWidth(30) //列最小宽度
.setColumnWidth(1, 79) //设置指定列文本宽度
.setMinRowHeight(30)//行最小高度
.setMaxRowHeight(35)//行最大高度
.setTextViewSize(14) //单元格字体大小
.setFristRowBackGroudColor(com.xscm.moduleutil.R.color.transparent)//表头背景色
.setTableHeadTextColor(com.xscm.moduleutil.R.color.white)//表头字体颜色
.setTableContentTextColor(com.xscm.moduleutil.R.color.white)//单元格字体颜色
.setCellPadding(5)//设置单元格内边距(dp)
// .setNullableString("N/A") //空值替换值
.setTableViewListener(new LockTableView.OnTableViewListener() {
@Override
public void onTableViewScrollChange(int x, int y) {
// Log.e("滚动值","["+x+"]"+"["+y+"]");
}
})//设置横向滚动回调监听
.setTableViewRangeListener(new LockTableView.OnTableViewRangeListener() {
@Override
public void onLeft(HorizontalScrollView view) {
Log.e("滚动边界", "滚动到最左边");
}
@Override
public void onRight(HorizontalScrollView view) {
Log.e("滚动边界", "滚动到最右边");
}
})//设置横向滚动边界监听
.show(); //显示表格,此方法必须调用
mLockTableView.getTableScrollView().setPullRefreshEnabled(false);
mLockTableView.getTableScrollView().setLoadingMoreEnabled(false);
mLockTableView.getTableScrollView().setRefreshProgressStyle(ProgressStyle.SquareSpin);
}
@SuppressLint("SetTextI18n")
@Override
public void getNobilityDetail(NobilitDeatils nobilitDeatils) {
ImageUtils.loadHeadCC(nobilitDeatils.getUser_info().getAvatar(), mBinding.ciUserImage);
mBinding.tvUserName.setText(nobilitDeatils.getUser_info().getNickname());
if (nobilitDeatils.getNobility_info().getStatus() == 0) {
mBinding.tvUserLv.setText("暂未开通任何爵位");
mBinding.imMeNobleStatus.setImageResource(com.xscm.moduleutil.R.mipmap.me_noble_no);
mBinding.tvUserStatus.setText("您尚未开通任何爵位");
mBinding.imMeNobleXf.setVisibility(GONE);
mBinding.imSj.setVisibility(GONE);
mBinding.ciImage2.setVisibility(GONE);
mBinding.tvMeX.setVisibility(GONE);
mBinding.imKt.setVisibility(GONE);
} else {
lid=nobilitDeatils.getNobility_info().getLid()+"";
mBinding.tvUserLv.setText("的爵位");
mBinding.imMeNobleStatus.setVisibility(GONE);
ImageUtils.loadHeadCC(nobilitDeatils.getNobility_info().getImage(), mBinding.imNoble);
mBinding.imMeNobleXf.setVisibility(VISIBLE);
mBinding.tvMeNobleLv.setVisibility(VISIBLE);
mBinding.tvUserStatus.setText("截止时间:" + nobilitDeatils.getNobility_info().getEnd_time());
mBinding.tvMeNobleLv.setText(nobilitDeatils.getNobility_info().getName());
applyGradientToTextView(mBinding.tvMeNobleLv);
mBinding.imSj.setVisibility(VISIBLE);
mBinding.ciImage2.setVisibility(VISIBLE);
mBinding.tvMeX.setVisibility(VISIBLE);
mBinding.imKt.setVisibility(VISIBLE);
ImageUtils.loadHeadCC(nobilitDeatils.getUser_info().getAvatar(), mBinding.ciImage2);
String nickname = nobilitDeatils.getUser_info().getNickname();
String displayNickname = nickname.length() > 3 ? nickname.substring(0, 3) + ".." : nickname;
mBinding.tvMeX.setText(displayNickname + "的当前爵位状态是" + nobilitDeatils.getNobility_info().getName());
// mBinding.tvMeX.setText(nobilitDeatils.getUser_info().getNickname()+"的当前爵位状态是"+nobilitDeatils.getNobility_info().getName());
}
mNobilityPowerItemList = nobilitDeatils.getNobility_power_list();
setmContentView();
}
@Override
public void getNobilityList(List<NobilitList> nobilitLists) {
}
@Override
public void bindType(BindType bindType) {
}
@Override
public void appPay(AppPay appPay) {
}
@Override
public void getNobilityPrice(NobilityPrice nobilityPrice) {
}
// 在 Activity 或 Fragment 中
private void applyGradientToTextView(TextView textView) {
ViewTreeObserver vto = textView.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
textView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
int width = textView.getWidth();
int height = textView.getHeight();
if (width > 0) {
LinearGradient gradient = new LinearGradient(
0, 0, 0, height,
new int[]{0xFFA292FF,0xFFA292FF, 0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF, 0xFFA292FF,0xFFA292FF},
new float[]{0f,0.2f,0.5f, 0.5f,0.5f, 0.8f, 1f} ,
Shader.TileMode.MIRROR
);
textView.getPaint().setShader(gradient);
textView.invalidate();
}
}
});
}
}

View File

@@ -0,0 +1,23 @@
package com.example.modulevocal.activity.ui.main;
import android.app.Activity;
import com.xscm.moduleutil.activity.IPresenter;
import com.xscm.moduleutil.activity.IView;
import com.xscm.moduleutil.bean.GiftUserWallBean;
/**
* com.example.modulevocal.activity.ui.main
* qx
* 2025/11/5
*/
public class GiftWallConacts {
public interface View extends IView<Activity> {
void setGiftWall(GiftUserWallBean data);
}
public interface IMePre extends IPresenter {
void giftWall(String userId);
}
}

View File

@@ -0,0 +1,40 @@
package com.example.modulevocal.conacts;
import android.app.Activity;
import com.xscm.moduleutil.activity.IPresenter;
import com.xscm.moduleutil.activity.IView;
import com.xscm.moduleutil.bean.*;
import java.util.List;
/**
* com.example.modulevocal.conacts
* qx
* 2025/11/8
*/
public class NobleTitleConacts {
public interface View extends IView<Activity> {
void getNobilityDetail(NobilitDeatils nobilitDeatils);
void getNobilityList(List<NobilitList> nobilitLists);
void bindType(BindType bindType);
void appPay(AppPay appPay);
void getNobilityPrice(NobilityPrice nobilityPrice);
}
public interface IMePre extends IPresenter {
void getNobilityDetail();
void getNobilityList();
void bindType(String userId);
void appPay(String user_id, String money, String type, String type_id);
void getNobilityPrice(String id);
}
}

View File

@@ -0,0 +1,98 @@
package com.example.modulevocal.activity.ui.main;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.GridView;
import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
import com.example.modulevocal.databinding.FragmentGiftWallBinding;
import com.xscm.moduleutil.bean.GiftUserWallBean;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.List;
/**
* A placeholder fragment containing a simple view.
*/
public class PlaceholderFragment extends Fragment {
private static final String ARG_SECTION_NUMBER = "section_number";
private PageViewModel pageViewModel;
private FragmentGiftWallBinding binding;
private GiftWallAdapter mGiftWallAdapter;
public static PlaceholderFragment newInstance(int index) {
PlaceholderFragment fragment = new PlaceholderFragment();
// Bundle bundle = new Bundle();
// bundle.putInt(ARG_SECTION_NUMBER, index);
// fragment.setArguments(bundle);
return fragment;
}
@Override
public void onAttach(@NonNull @NotNull Context context) {
super.onAttach(context);
pageViewModel = new ViewModelProvider(this).get(PageViewModel.class);
int index = 1;
if (getArguments() != null) {
index = getArguments().getInt(ARG_SECTION_NUMBER);
// 获取传递的礼物列表数据
List<GiftUserWallBean.GiftWallBean> giftList =
(List<GiftUserWallBean.GiftWallBean>) getArguments().getSerializable("gift_list");
// 将数据设置到 ViewModel
if (giftList != null) {
if (index == 1){
pageViewModel.setLiangDataList(giftList);
}else if (index == 2){
pageViewModel.setNoLiangDataList(giftList);
}
}
}
pageViewModel.setIndex(index);
mGiftWallAdapter= new GiftWallAdapter(new ArrayList<>());
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(
@NonNull LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
binding = FragmentGiftWallBinding.inflate(inflater, container, false);
View root = binding.getRoot();
// 设置 GridView
GridView gridView = binding.gridView;
gridView.setAdapter(mGiftWallAdapter);
// 观察数据变化并更新 GridView
pageViewModel.getDataList().observe(getViewLifecycleOwner(), dataList -> {
if (dataList != null) {
mGiftWallAdapter.updateData(dataList);
}
});
return root;
}
@Override
public void onDestroyView() {
super.onDestroyView();
binding = null;
}
}

View File

@@ -0,0 +1,37 @@
package com.example.modulevocal.activity.ui.main;
import android.content.Context;
import com.xscm.moduleutil.bean.GiftUserWallBean;
import com.xscm.moduleutil.http.BaseObserver;
import com.xscm.moduleutil.presenter.BasePresenter;
import io.reactivex.disposables.Disposable;
/**
* com.example.modulevocal.activity.ui.main
* qx
* 2025/11/5
*/
public class GiftWallPresenter extends BasePresenter<GiftWallConacts.View> implements GiftWallConacts.IMePre{
public GiftWallPresenter(GiftWallConacts.View view, Context context) {
super(view, context);
}
@Override
public void giftWall(String userId) {
api.giftWall(userId, new BaseObserver<GiftUserWallBean>() {
@Override
public void onSubscribe(Disposable d) {
addDisposable(d);
}
@Override
public void onNext(GiftUserWallBean giftBeans) {
MvpRef.get().setGiftWall(giftBeans);
}
@Override
public void onComplete() {
}
});
}
}

View File

@@ -0,0 +1,118 @@
package com.example.modulevocal.presenter;
import android.content.Context;
import com.example.modulevocal.conacts.MeConacts;
import com.example.modulevocal.conacts.NobleTitleConacts;
import com.xscm.moduleutil.bean.*;
import com.xscm.moduleutil.http.BaseObserver;
import com.xscm.moduleutil.presenter.BasePresenter;
import io.reactivex.disposables.Disposable;
import org.jetbrains.annotations.NotNull;
import java.lang.ref.WeakReference;
import java.util.List;
/**
* com.example.modulevocal.presenter
* qx
* 2025/11/8
*/
public class NobleTitlePresenter extends BasePresenter<NobleTitleConacts.View> implements NobleTitleConacts.IMePre{
private NobleTitleConacts.View mView;
public NobleTitlePresenter(NobleTitleConacts.View view, Context context) {
super(view, context);
mView = view;
}
@Override
public void getNobilityDetail() {
api.getNobilityDetail(new BaseObserver<NobilitDeatils>() {
@Override
public void onSubscribe(@NotNull Disposable d) {
}
@Override
public void onNext(@NotNull NobilitDeatils nobilitDeatils) {
if (MvpRef==null){
MvpRef=new WeakReference<>(mView);
}
MvpRef.get().getNobilityDetail(nobilitDeatils);
}
});
}
@Override
public void getNobilityList() {
api.getNobilityList(new BaseObserver<List<NobilitList>>(){
@Override
public void onSubscribe(@NotNull Disposable d) {
addDisposable(d);
}
@Override
public void onNext(@NotNull List<NobilitList> nobilitLists) {
if (MvpRef==null){
MvpRef=new WeakReference<>(mView);
}
MvpRef.get().getNobilityList(nobilitLists);
}
});
}
@Override
public void bindType(String userId) {
api.bindType(userId, new BaseObserver<BindType>() {
@Override
public void onSubscribe(Disposable d) {
addDisposable(d);
}
@Override
public void onNext(BindType bindType) {
if (MvpRef==null){
MvpRef=new WeakReference<>(mView);
}
MvpRef.get().bindType(bindType);
}
});
}
@Override
public void appPay(String user_id, String money, String type, String nobility_id) {
api.appPay(user_id, money, "", type,"","",nobility_id, new BaseObserver<AppPay>() {
@Override
public void onSubscribe(Disposable d) {
addDisposable(d);
}
@Override
public void onNext(AppPay appPay) {
if (MvpRef==null){
MvpRef=new WeakReference<>(mView);
}
MvpRef.get().appPay(appPay);
}
});
}
@Override
public void getNobilityPrice(String id) {
api.getNobilityPrice(id, new BaseObserver<NobilityPrice>() {
@Override
public void onSubscribe(@NotNull Disposable d) {
addDisposable(d);
}
@Override
public void onNext(@NotNull NobilityPrice nobilityPrice) {
if (MvpRef==null){
MvpRef=new WeakReference<>(mView);
}
MvpRef.get().getNobilityPrice(nobilityPrice);
}
});
}
}

View File

@@ -0,0 +1,144 @@
package com.example.modulevocal.activity.ui.main;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.example.modulevocal.R;
import com.example.modulevocal.adapter.TopUsersAdapter;
import com.xscm.moduleutil.bean.CombinedGiftBean;
import com.xscm.moduleutil.bean.GiftUserWallBean;
import com.xscm.moduleutil.color.ThemeableDrawableUtils;
import com.xscm.moduleutil.utils.ColorManager;
import com.xscm.moduleutil.utils.ImageLoader;
import com.xscm.moduleutil.utils.ImageUtils;
import java.util.ArrayList;
import java.util.List;
/**
* com.example.modulevocal.activity.ui.main
* qx
* 2025/11/5
*/
public class GiftWallAdapter extends BaseAdapter {
private List<GiftUserWallBean.GiftWallBean> mDataList;
public GiftWallAdapter(List<GiftUserWallBean.GiftWallBean> dataList) {
this.mDataList = dataList;
}
public void updateData(List<GiftUserWallBean.GiftWallBean> newDataList) {
this.mDataList = newDataList;
notifyDataSetChanged();
}
@Override
public int getCount() {
return mDataList != null ? mDataList.size() : 0;
}
@Override
public Object getItem(int position) {
return mDataList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// 实现 GridView item 的布局和数据绑定
// 这里返回每个 GridView 项的视图
ViewHolder holder;
if (convertView == null) {
convertView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_gift_wall, parent, false);
holder = new ViewHolder();
holder.textView = convertView.findViewById(R.id.tv_gift_name);
holder.iv_gift_image = convertView.findViewById(R.id.iv_gift_image);
holder.gift_num = convertView.findViewById(R.id.gift_num);
holder.tv_price33 = convertView.findViewById(R.id.tv_price33);
holder.rv_gift_user_list = convertView.findViewById(R.id.rv_gift_user_list);
holder.tv_gift_values = convertView.findViewById(R.id.tv_gift_values);
holder.cl_gift_item = convertView.findViewById(R.id.cl_gift_item);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
GiftUserWallBean.GiftWallBean item = mDataList.get(position);
holder.textView.setText(item.getGift_name());
// ImageUtils.loadHeadCC(item.getBase_image(), holder.iv_gift_image);
holder.tv_price33.setText(item.getGift_price());
TextView tv_number = holder.gift_num;
if (item.is_liang()) {
holder.tv_gift_values.setVisibility(View.VISIBLE);
holder.gift_num.setVisibility(View.VISIBLE);
holder.rv_gift_user_list.setVisibility(View.VISIBLE);
holder.cl_gift_item.setBackgroundResource(com.xscm.moduleutil.R.mipmap.gift_wall_liang);
// helper.getView(R.id.cl_iv_down_on).setBackgroundColor(Color.parseColor("#E6E6E6"));
// 点亮的礼物显示高亮和送礼物的用户
tv_number.setText("共计" + item.getTotal_count() + "");
ImageUtils.loadHeadCC(item.getBase_image(), holder.iv_gift_image);
// 显示送礼物的用户列表
RecyclerView recyclerView = holder.rv_gift_user_list;
// recyclerView.setLayoutManager(new GridLayoutManager(mContext,2,LinearLayoutManager.HORIZONTAL,false));
// recyclerView.setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.HORIZONTAL, false));
recyclerView.setLayoutManager(new LinearLayoutManager(convertView.getContext(), LinearLayoutManager.HORIZONTAL, false) {
@Override
public boolean canScrollHorizontally() {
return false; // 禁止水平滑动
}
});
// TopUsersAdapter topUsersAdapter = new TopUsersAdapter(item.getTop_users());
if (item.getTop_users() != null && item.getTop_users().size() > 0) {
List<CombinedGiftBean.TopUsers> displayUsers = new ArrayList<>();
if (item.getTop_users() != null) {
int maxDisplay = Math.min(2, item.getTop_users().size()); // 最多显示2个
for (int i = 0; i < maxDisplay; i++) {
displayUsers.add(item.getTop_users().get(i));
}
}
TopUsersAdapter topUsersAdapter = new TopUsersAdapter(displayUsers);
recyclerView.setAdapter(topUsersAdapter);
holder.tv_gift_values.setText("" + item.getTop_users().size() + "");
}
} else {
holder.cl_gift_item.setBackgroundResource(com.xscm.moduleutil.R.mipmap.gift_wall_no_liang);
ImageLoader.loadImage(convertView.getContext(), holder.iv_gift_image, item.getBase_image(),0.4f);
holder.tv_gift_values.setVisibility(View.GONE);
holder.gift_num.setVisibility(View.GONE);
holder.rv_gift_user_list.setVisibility(View.GONE);
}
return convertView;
}
static class ViewHolder {
TextView textView;
ImageView iv_gift_image;
TextView tv_gift_values;
TextView gift_num;
TextView tv_price33;
RecyclerView rv_gift_user_list;
ConstraintLayout cl_gift_item;
}
}

View File

@@ -0,0 +1,94 @@
package com.example.modulevocal.adapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.example.modulevocal.R;
import com.example.modulevocal.activity.ui.main.GiftWallAdapter;
import com.xscm.moduleutil.bean.CombinedGiftBean;
import com.xscm.moduleutil.bean.GiftUserWallBean;
import com.xscm.moduleutil.bean.NobilitList;
import com.xscm.moduleutil.utils.ImageLoader;
import com.xscm.moduleutil.utils.ImageUtils;
import com.xscm.moduleutil.widget.CircularImage;
import java.util.ArrayList;
import java.util.List;
/**
* com.example.modulevocal.adapter
* qx
* 2025/11/10
*/
public class GridNobleAdapter extends BaseAdapter {
private List<NobilitList.Power.PowerItem> mDataList;
public GridNobleAdapter(List<NobilitList.Power.PowerItem> dataList) {
this.mDataList = dataList;
}
public GridNobleAdapter() {
}
public void updateData(List<NobilitList.Power.PowerItem> newDataList) {
this.mDataList = newDataList;
notifyDataSetChanged();
}
@Override
public int getCount() {
return mDataList != null ? mDataList.size() : 0;
}
@Override
public Object getItem(int position) {
return mDataList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// 实现 GridView item 的布局和数据绑定
// 这里返回每个 GridView 项的视图
ViewHolder holder;
if (convertView == null) {
convertView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_noble_tq, parent, false);
holder = new ViewHolder();
holder.tv_hz_mc = convertView.findViewById(R.id.tv_hz_mc);
holder.ci_image = convertView.findViewById(R.id.ci_image);
holder.tv_hz_detail = convertView.findViewById(R.id.tv_hz_detail);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
NobilitList.Power.PowerItem item = mDataList.get(position);
holder.tv_hz_detail.setText(item.getContent());
holder.tv_hz_mc.setText(item.getName());
ImageUtils.loadHeadCC(item.getImage(), holder.ci_image);
return convertView;
}
static class ViewHolder {
TextView tv_hz_mc;
CircularImage ci_image;
TextView tv_hz_detail;
}
}

View File

@@ -0,0 +1,24 @@
package com.example.modulevocal.adapter;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.example.modulevocal.R;
import com.xscm.moduleutil.bean.NobilityPrice;
/**
* com.example.modulevocal.adapter
* qx
* 2025/11/10
*/
// NoblePrivilegeAdapter.java
public class NoblePrivilegeAdapter extends BaseQuickAdapter<NobilityPrice.PowerItem, BaseViewHolder> {
public NoblePrivilegeAdapter() {
super(R.layout.item_noble_privilege);
}
@Override
protected void convert(BaseViewHolder helper, NobilityPrice.PowerItem item) {
helper.setText(R.id.tv_title, item.getContent());
}
}

View File

@@ -0,0 +1,54 @@
package com.example.modulevocal.adapter;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import com.example.modulevocal.R;
import com.xscm.moduleutil.bean.NobilitList;
import com.xscm.moduleutil.bean.TopRoom;
import com.xscm.moduleutil.utils.ImageLoader;
import com.xscm.moduleutil.utils.ImageUtils;
import com.zhpan.bannerview.BaseBannerAdapter;
import com.zhpan.bannerview.BaseViewHolder;
/**
*com.example.modulevocal.adapter
*qx
*2025/11/10
*
*/
public class NobliityBannerAdapter extends BaseBannerAdapter<NobilitList> {
private OnItemClickListener onItemClickListener;
private int mCurrentPosition;
public int getmCurrentPosition() {
return mCurrentPosition;
}
public void setmCurrentPosition(int mCurrentPosition) {
this.mCurrentPosition = mCurrentPosition;
}
public void setOnItemClickListener(OnItemClickListener listener) {
this.onItemClickListener = listener;
}
@Override
protected void bindData(BaseViewHolder<NobilitList> holder, NobilitList data, int position, int pageSize) {
if (position>=mCurrentPosition) {
ImageUtils.loadHeadCC(data.getImage(), holder.itemView.findViewById(R.id.iv_follow_bg));
// ImageLoader.loadImage(holder.itemView.getContext(),holder.itemView.findViewById(R.id.iv_follow_bg),data.getImage(),1f);
}else {
ImageLoader.loadImage(holder.itemView.getContext(),holder.itemView.findViewById(R.id.iv_follow_bg),data.getImage(),0f);
}
}
public interface OnItemClickListener {
void onItemClick(View view, TopRoom data, int position);
}
@Override
public int getLayoutId(int viewType) {
return R.layout.index_item_nobli;
}
}

View File

@@ -0,0 +1,70 @@
package com.example.modulevocal.activity.ui.main;
import android.content.Context;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import androidx.fragment.app.*;
import androidx.viewpager2.adapter.FragmentStateAdapter;
import com.xscm.moduleutil.bean.GiftUserWallBean;
import java.io.Serializable;
/**
* A [FragmentPagerAdapter] that returns a fragment corresponding to
* one of the sections/tabs/pages.
*/
public class SectionsPagerAdapter extends FragmentStateAdapter {
@StringRes
private static final int[] TAB_TITLES = new int[]{com.xscm.moduleutil.R.string.tab_text_1, com.xscm.moduleutil.R.string.tab_text_2};
private final Context mContext;
private GiftUserWallBean giftData; // 添加数据字段
// public SectionsPagerAdapter(Context context, FragmentManager fm, GiftUserWallBean giftData) {
// super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
// this.mContext = context;
// this.giftData = giftData;
// }
public SectionsPagerAdapter(@NonNull FragmentActivity fragmentActivity, GiftUserWallBean giftData) {
super(fragmentActivity);
this.mContext = fragmentActivity;
this.giftData = giftData;
}
@NonNull
@Override
public Fragment createFragment(int position) {
// 创建 Fragment 实例并传递参数
PlaceholderFragment fragment = PlaceholderFragment.newInstance(position + 1);
Bundle args = new Bundle();
// 根据位置传递不同的数据
if (giftData != null) {
if (position == 0) {
// 传递 liang 数据
args.putSerializable("gift_list", (Serializable) giftData.getLiang());
} else if (position == 1) {
// 传递 no_liang 数据
args.putSerializable("gift_list", (Serializable) giftData.getNo_liang());
}
}
args.putInt("section_number", position+1);
fragment.setArguments(args);
return fragment;
}
@Override
public int getItemCount() {
return 2; // 假设 GiftUserWallBean 包含 list 数据结构
}
public CharSequence getPageTitle(int position) {
return mContext.getResources().getString(TAB_TITLES[position]);
}
}