275 lines
10 KiB
Java
275 lines
10 KiB
Java
package com.example.modulevocal.fragment;
|
|
|
|
import android.content.Intent;
|
|
import android.graphics.Color;
|
|
import android.os.Bundle;
|
|
import android.view.View;
|
|
import android.widget.ImageView;
|
|
import android.widget.LinearLayout;
|
|
|
|
import androidx.annotation.Nullable;
|
|
import androidx.core.content.ContextCompat;
|
|
import androidx.fragment.app.Fragment;
|
|
import androidx.fragment.app.FragmentManager;
|
|
import androidx.fragment.app.FragmentStatePagerAdapter;
|
|
import androidx.recyclerview.widget.GridLayoutManager;
|
|
|
|
import com.alibaba.android.arouter.launcher.ARouter;
|
|
import com.chad.library.adapter.base.BaseQuickAdapter;
|
|
import com.chad.library.adapter.base.BaseViewHolder;
|
|
import com.example.modulevocal.R;
|
|
import com.example.modulevocal.conacts.UserHomepageConacts;
|
|
import com.example.modulevocal.databinding.FragmentUserHompageBinding;
|
|
import com.example.modulevocal.presenter.UserHomepagePresenter;
|
|
import com.xscm.moduleutil.base.BaseMvpFragment;
|
|
import com.xscm.moduleutil.bean.CircleListBean;
|
|
import com.xscm.moduleutil.bean.MyBagBean;
|
|
import com.xscm.moduleutil.bean.UserInfo;
|
|
import com.xscm.moduleutil.bean.UserTagBean;
|
|
import com.xscm.moduleutil.color.ThemeableDrawableUtils;
|
|
import com.xscm.moduleutil.utils.ARouteConstants;
|
|
import com.xscm.moduleutil.utils.ColorManager;
|
|
import com.xscm.moduleutil.utils.ImageUtils;
|
|
import com.xscm.moduleutil.utils.SpUtil;
|
|
import com.tencent.imsdk.v2.V2TIMConversation;
|
|
import com.tencent.qcloud.tuicore.TUIConstants;
|
|
import com.tencent.qcloud.tuikit.tuichat.classicui.page.TUIC2CChatActivity;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
/**
|
|
* @author qx
|
|
* @data 2025/6/4
|
|
* @description: 用户主页
|
|
*/
|
|
public class UserHomepageFragment extends BaseMvpFragment<UserHomepagePresenter, FragmentUserHompageBinding> implements UserHomepageConacts.View {
|
|
private List<MyBagBean> list;
|
|
private String userId;
|
|
private UserInfo userInfo;
|
|
private BaseQuickAdapter<UserTagBean, BaseViewHolder> adapter;
|
|
private List<UserTagBean> userTagBeans = new ArrayList<>();
|
|
private int type;
|
|
|
|
@Override
|
|
public void setUserDetails(UserInfo data) {
|
|
|
|
}
|
|
|
|
@Override
|
|
public void setCircleList(List<CircleListBean> list) {
|
|
|
|
}
|
|
|
|
@Override
|
|
public void userGuanzSuccess(String s) {
|
|
if (userInfo.getIs_follow() == 1) {
|
|
userInfo.setIs_follow(0);
|
|
// SpUtil.saveUserInfo(userInfo);
|
|
} else {
|
|
userInfo.setIs_follow(1);
|
|
// SpUtil.saveUserInfo(userInfo);
|
|
}
|
|
refreshView();
|
|
}
|
|
|
|
@Override
|
|
public void setLikeZone() {
|
|
|
|
}
|
|
|
|
public static UserHomepageFragment newInstance(UserInfo userInfo, int type) {
|
|
UserHomepageFragment fragment = new UserHomepageFragment();
|
|
Bundle args = new Bundle();
|
|
args.putSerializable("userInfo", userInfo);
|
|
args.putInt("type", type);
|
|
fragment.setArguments(args);
|
|
return fragment;
|
|
}
|
|
|
|
@Override
|
|
public void initArgs(Bundle arguments) {
|
|
super.initArgs(arguments);
|
|
userInfo = (UserInfo) arguments.getSerializable("userInfo");
|
|
type = arguments.getInt("type");
|
|
}
|
|
|
|
@Override
|
|
protected UserHomepagePresenter bindPresenter() {
|
|
return new UserHomepagePresenter(this, getSelfActivity());
|
|
}
|
|
|
|
@Override
|
|
protected void initData() {
|
|
if (userInfo == null) {
|
|
userInfo = SpUtil.getUserInfo();
|
|
}
|
|
list = new ArrayList<>();
|
|
list.add(new MyBagBean("动态", "1"));
|
|
list.add(new MyBagBean("礼物墙", "2"));
|
|
list.add(new MyBagBean("我的相册", "3"));
|
|
mBinding.viewPager.setAdapter(new MyFragmentPagerAdapter(getChildFragmentManager(), list, userInfo.getUser_id()+""));
|
|
mBinding.slidingTabLayout.setViewPager(mBinding.viewPager);
|
|
if (type == 1) {
|
|
mBinding.slidingTabLayout.setCurrentTab(1);
|
|
} else {
|
|
mBinding.slidingTabLayout.setCurrentTab(0);
|
|
}
|
|
mBinding.headerInfo.rivUserHead.setData(userInfo.getAvatar(), "", userInfo.getSex() + "");
|
|
mBinding.headerInfo.tvNickName.setText(userInfo.getNickname());
|
|
mBinding.headerInfo.tvUserId.setText(userInfo.getUser_code());
|
|
mBinding.headerInfo.tvAge.setText(userInfo.getAge() + "岁");
|
|
mBinding.headerInfo.tvJj.setText(userInfo.getProfile());
|
|
LinearLayout llContainer = mBinding.headerInfo.llImageContainer;
|
|
llContainer.removeAllViews(); // 清空旧的 ImageView
|
|
|
|
List<String> images = userInfo.getIcon(); // 获取图片列表
|
|
|
|
for (String url : images) {
|
|
if (url.contains("http")) {
|
|
ImageView imageView = new ImageView(getContext());
|
|
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
|
|
getContext().getResources().getDimensionPixelSize(com.xscm.moduleutil.R.dimen.dp_37),
|
|
getContext().getResources().getDimensionPixelSize(com.xscm.moduleutil.R.dimen.dp_15)
|
|
);
|
|
params.setMargins(0, 0, getContext().getResources().getDimensionPixelSize(com.xscm.moduleutil.R.dimen.dp_5), 0); // 右边距
|
|
imageView.setLayoutParams(params);
|
|
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
|
|
|
|
// 使用 Glide 加载图片
|
|
ImageUtils.loadHeadCC(url, imageView);
|
|
|
|
llContainer.addView(imageView);
|
|
}
|
|
}
|
|
mBinding.headerInfo.recycleView2.setLayoutManager(new GridLayoutManager(getContext(), 3));
|
|
|
|
adapter = new BaseQuickAdapter<UserTagBean, BaseViewHolder>(R.layout.item_tag, userTagBeans) {
|
|
|
|
|
|
@Override
|
|
protected void convert(BaseViewHolder helper, UserTagBean item) {
|
|
helper.setText(R.id.tv, item.getTag_name());
|
|
|
|
}
|
|
|
|
};
|
|
mBinding.headerInfo.recycleView2.setAdapter(adapter);
|
|
if (userInfo != null) {
|
|
|
|
if (userInfo.getTag_list() != null && !userInfo.getTag_list().isEmpty()) {
|
|
adapter.setNewData(userInfo.getTag_list());
|
|
}
|
|
}
|
|
|
|
|
|
mBinding.headerInfo.tvGz.setOnClickListener(this::onClick);
|
|
mBinding.headerInfo.tvGsSx.setOnClickListener(this::onClick);
|
|
refreshView();
|
|
try {
|
|
if (userInfo.getGuild()==null || userInfo.getGuild().isEmpty()){
|
|
mBinding.headerInfo.tvGH.setText("所属公会:无");
|
|
}else {
|
|
mBinding.headerInfo.tvGH.setText("所属公会:"+userInfo.getGuild());
|
|
}
|
|
} catch (Exception ignored) {
|
|
mBinding.headerInfo.tvGH.setText("所属公会:无");
|
|
}
|
|
|
|
|
|
}
|
|
|
|
private void refreshView() {
|
|
if (SpUtil.getUserId() == userInfo.getUser_id()) {
|
|
mBinding.headerInfo.tvGsSx.setVisibility(View.GONE);
|
|
mBinding.headerInfo.tvGz.setVisibility(View.GONE);
|
|
} else {
|
|
mBinding.headerInfo.tvGsSx.setVisibility(View.VISIBLE);
|
|
mBinding.headerInfo.tvGz.setVisibility(View.VISIBLE);
|
|
if (userInfo.getIs_follow() == 1) {
|
|
// mBinding.headerInfo.tvGz.setBackground(getResources().getDrawable(com.xscm.moduleutil.R.mipmap.yigz));
|
|
ThemeableDrawableUtils.setThemeableRoundedBackground( mBinding.headerInfo.tvGz, ContextCompat.getColor(getContext(), com.xscm.moduleutil.R.color.EFF2F8), 34);
|
|
mBinding.headerInfo.tvGz.setTextColor(Color.BLACK);
|
|
mBinding.headerInfo.tvGz.setText("已关注");
|
|
} else {
|
|
// mBinding.headerInfo.tvGz.setBackground(getResources().getDrawable(com.xscm.moduleutil.R.mipmap.gz));
|
|
|
|
ThemeableDrawableUtils.setThemeableRoundedBackground( mBinding.headerInfo.tvGz, ColorManager.getInstance().getPrimaryColorInt(), 34);
|
|
mBinding.headerInfo.tvGz.setTextColor(ColorManager.getInstance().getButtonColorInt());
|
|
mBinding.headerInfo.tvGz.setText("关注");
|
|
}
|
|
|
|
|
|
|
|
if (userInfo.getRoom_id() == null || userInfo.getRoom_id().equals("0")) {
|
|
mBinding.headerInfo.tvGsSx.setBackground(getResources().getDrawable(com.xscm.moduleutil.R.mipmap.six));
|
|
} else {
|
|
mBinding.headerInfo.tvGsSx.setBackground(getResources().getDrawable(com.xscm.moduleutil.R.mipmap.gsui));
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
private void onClick(View view) {
|
|
if (view.getId() == R.id.tv_gz) {
|
|
MvpPre.userGuanz(userInfo.getUser_id() + "", "1");
|
|
} else if (view.getId() == R.id.tv_gs_sx) {
|
|
if (userInfo.getRoom_id() == null || userInfo.getRoom_id().equals("0")) {
|
|
Intent intent = new Intent(getActivity(), TUIC2CChatActivity.class);
|
|
intent.putExtra(TUIConstants.TUIChat.CHAT_ID, "u" + userInfo.getUser_id());
|
|
intent.putExtra(TUIConstants.TUIChat.CHAT_TYPE, V2TIMConversation.V2TIM_C2C);
|
|
startActivity(intent);
|
|
} else {
|
|
ARouter.getInstance().build(ARouteConstants.ROOM_DETAILS).withString("roomId", userInfo.getRoom_id()).navigation();
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override
|
|
protected void initView() {
|
|
mBinding.constraintLayout.setVisibility(View.VISIBLE);
|
|
}
|
|
|
|
@Override
|
|
protected int getLayoutId() {
|
|
return R.layout.fragment_user_hompage;
|
|
}
|
|
|
|
private static class MyFragmentPagerAdapter extends FragmentStatePagerAdapter {
|
|
|
|
private List<MyBagBean> list;
|
|
private String userId;
|
|
|
|
|
|
public MyFragmentPagerAdapter(FragmentManager fm, List<MyBagBean> list, String userId) {
|
|
super(fm);
|
|
this.list = list;
|
|
this.userId = userId;
|
|
}
|
|
|
|
@Override
|
|
public Fragment getItem(int position) {
|
|
MyBagBean model = list.get(position);
|
|
if ("1".equals(model.getMyBagType())) {
|
|
return CirleListFragment.newInstance(userId);
|
|
} else if ("2".equals(model.getMyBagType())) {
|
|
return UserGiftWallFragment.newInstance(userId);
|
|
} else {
|
|
return MyAlbumFragment.newInstance(userId);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public int getCount() {
|
|
return list.size();
|
|
}
|
|
|
|
@Nullable
|
|
@Override
|
|
public CharSequence getPageTitle(int position) {
|
|
MyBagBean model = list.get(position);
|
|
return model.getMyBagTitle();
|
|
}
|
|
}
|
|
}
|