公会逻辑修改

This commit is contained in:
wushaocheng
2022-11-08 11:52:44 +08:00
parent 42e3a8e32e
commit 792b63e0d5
16 changed files with 360 additions and 127 deletions

View File

@@ -0,0 +1,42 @@
package com.yizhuan.erban.association
import androidx.lifecycle.MutableLiveData
import com.yizhuan.erban.base.BaseViewModel
import com.yizhuan.xchat_android_core.association.AssociationModel
import com.yizhuan.xchat_android_core.association.HallListInfo
import com.yizhuan.xchat_android_core.association.ClanListInfo
import com.yizhuan.xchat_android_core.bean.response.ListResult
class AssociationViewModel : BaseViewModel() {
//公会列表
private val _clanListLiveData = MutableLiveData<ListResult<ClanListInfo>?>()
val clanListLiveData: MutableLiveData<ListResult<ClanListInfo>?> = _clanListLiveData
//牌照房列表
private val _hallListLiveData = MutableLiveData<ListResult<HallListInfo>?>()
val hallListLiveData: MutableLiveData<ListResult<HallListInfo>?> = _hallListLiveData
fun getClanList() {
safeLaunch(
block = {
_clanListLiveData.value = AssociationModel.getClanList()
},
onError = {
_clanListLiveData.value = null
}
)
}
fun getHallList() {
safeLaunch(
block = {
_hallListLiveData.value = AssociationModel.getHallList()
},
onError = {
_hallListLiveData.value = null
}
)
}
}

View File

@@ -1,4 +1,4 @@
package com.yizhuan.erban.home.adapter;
package com.yizhuan.erban.association.adapter;
import android.view.View;
import android.widget.ImageView;
@@ -7,8 +7,7 @@ import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.yizhuan.erban.R;
import com.yizhuan.erban.ui.utils.ImageLoadUtilsV2;
import com.yizhuan.xchat_android_core.module_hall.hall.bean.ClanInfo;
import com.yizhuan.xchat_android_core.module_hall.hall.bean.ClanListInfo;
import com.yizhuan.xchat_android_core.association.ClanListInfo;
/**
* Created by yudi

View File

@@ -0,0 +1,47 @@
package com.yizhuan.erban.association.adapter;
import android.view.View;
import android.widget.ImageView;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.yizhuan.erban.R;
import com.yizhuan.erban.ui.utils.ImageLoadUtilsV2;
import com.yizhuan.xchat_android_core.association.ClanListInfo;
import com.yizhuan.xchat_android_core.association.HallListInfo;
/**
* Created by yudi
* on 2018/3/2.
*/
public class AssociationRoomAdapter extends BaseQuickAdapter<HallListInfo, BaseViewHolder> {
public AssociationRoomAdapter() {
super(R.layout.item_association);
}
@Override
protected void convert(BaseViewHolder helper, HallListInfo item) {
if (helper.getAdapterPosition() == 0) {
helper.getView(R.id.view_guild).setVisibility(View.VISIBLE);
helper.getView(R.id.view_guild).setBackgroundResource(R.drawable.guild_one);
} else if (helper.getAdapterPosition() == 1) {
helper.getView(R.id.view_guild).setVisibility(View.VISIBLE);
helper.getView(R.id.view_guild).setBackgroundResource(R.drawable.guild_two);
} else if (helper.getAdapterPosition() == 2) {
helper.getView(R.id.view_guild).setVisibility(View.VISIBLE);
helper.getView(R.id.view_guild).setBackgroundResource(R.drawable.guild_three);
} else {
helper.getView(R.id.view_guild).setVisibility(View.GONE);
helper.getView(R.id.tv_guild).setVisibility(View.VISIBLE);
helper.setText(R.id.tv_guild, String.valueOf(helper.getAdapterPosition() + 1));
}
ImageLoadUtilsV2.loadAvatar(helper.getView(R.id.iv_guild_icon), item.getOwnerAvatar());
helper.setText(R.id.tv_name, item.getOwnerNick());
ImageView iv_guild_image = helper.getView(R.id.iv_guild_image);
// ImageLoadUtilsV2.loadImage(iv_guild_image, item.getLevelIcon());
}
}

View File

@@ -0,0 +1,64 @@
package com.yizhuan.erban.association.fragment
import android.os.Bundle
import android.view.View
import androidx.fragment.app.activityViewModels
import androidx.recyclerview.widget.LinearLayoutManager
import com.chad.library.adapter.base.BaseQuickAdapter
import com.yizhuan.erban.R
import com.yizhuan.erban.base.BaseViewBindingFragment
import com.yizhuan.erban.common.EmptyViewHelper
import com.yizhuan.erban.databinding.FragmentAssociationBinding
import com.yizhuan.erban.association.AssociationViewModel
import com.yizhuan.erban.association.adapter.AssociationAdapter
import com.yizhuan.erban.module_hall.hall.activity.ModuleClanActivity
import com.yizhuan.erban.ui.utils.RVDelegate
import com.yizhuan.xchat_android_core.association.ClanListInfo
import com.yizhuan.xchat_android_library.utils.ResUtil
class AssociationFragment : BaseViewBindingFragment<FragmentAssociationBinding>() {
companion object {
fun newInstance(): AssociationFragment {
val args = Bundle()
val fragment = AssociationFragment()
fragment.arguments = args
return fragment
}
}
private lateinit var associationAdapter: AssociationAdapter
private lateinit var rvDelegate: RVDelegate<ClanListInfo>
private val associationViewModel: AssociationViewModel by activityViewModels()
override fun init() {
associationAdapter =
AssociationAdapter()
associationAdapter.onItemClickListener =
BaseQuickAdapter.OnItemClickListener { _: BaseQuickAdapter<*, *>?, _: View?, position: Int ->
val info = associationAdapter.getItem(position)
if (info != null && info.clanElderUid != 0L) {
ModuleClanActivity.start(context, info.clanElderUid)
}
}
rvDelegate = RVDelegate.Builder<ClanListInfo>()
.setAdapter(associationAdapter)
.setRecyclerView(binding.recyclerView)
.setEmptyView(
EmptyViewHelper.createEmptyView(
context,
ResUtil.getString(R.string.association_list_empty)
)
)
.setLayoutManager(LinearLayoutManager(mContext))
.build()
associationViewModel.clanListLiveData.observe(this) {
rvDelegate.loadData(it)
}
associationViewModel.getClanList()
}
}

View File

@@ -0,0 +1,60 @@
package com.yizhuan.erban.association.fragment
import android.os.Bundle
import android.view.View
import androidx.fragment.app.activityViewModels
import androidx.recyclerview.widget.LinearLayoutManager
import com.chad.library.adapter.base.BaseQuickAdapter
import com.yizhuan.erban.R
import com.yizhuan.erban.base.BaseViewBindingFragment
import com.yizhuan.erban.common.EmptyViewHelper
import com.yizhuan.erban.databinding.FragmentAssociationRoomBinding
import com.yizhuan.erban.association.AssociationViewModel
import com.yizhuan.erban.association.adapter.AssociationAdapter
import com.yizhuan.erban.association.adapter.AssociationRoomAdapter
import com.yizhuan.erban.ui.utils.RVDelegate
import com.yizhuan.xchat_android_core.association.HallListInfo
import com.yizhuan.xchat_android_library.utils.ResUtil
class AssociationRoomFragment : BaseViewBindingFragment<FragmentAssociationRoomBinding>() {
companion object {
fun newInstance(): AssociationRoomFragment {
val args = Bundle()
val fragment = AssociationRoomFragment()
fragment.arguments = args
return fragment
}
}
private lateinit var associationRoomAdapter: AssociationRoomAdapter
private lateinit var rvDelegate: RVDelegate<HallListInfo>
private val associationViewModel: AssociationViewModel by activityViewModels()
override fun init() {
associationRoomAdapter = AssociationRoomAdapter()
associationRoomAdapter.onItemClickListener =
BaseQuickAdapter.OnItemClickListener { _: BaseQuickAdapter<*, *>?, _: View?, position: Int ->
}
rvDelegate = RVDelegate.Builder<HallListInfo>()
.setAdapter(associationRoomAdapter)
.setRecyclerView(binding.recyclerView)
.setEmptyView(
EmptyViewHelper.createEmptyView(
context,
ResUtil.getString(R.string.association_hall_list_empty)
)
)
.setLayoutManager(LinearLayoutManager(mContext))
.build()
associationViewModel.hallListLiveData.observe(this) {
rvDelegate.loadData(it)
}
associationViewModel.getHallList()
}
}

View File

@@ -1,106 +1,87 @@
package com.yizhuan.erban.home.activity;
package com.yizhuan.erban.home.activity
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.content.Context
import android.content.Intent
import android.widget.LinearLayout
import android.widget.TextView
import androidx.fragment.app.Fragment
import androidx.viewpager.widget.ViewPager
import com.netease.nim.uikit.StatusBarUtil
import com.yizhuan.erban.R
import com.yizhuan.erban.base.BaseViewBindingActivity
import com.yizhuan.erban.databinding.ActivityAssociationBinding
import com.yizhuan.erban.association.fragment.AssociationFragment
import com.yizhuan.erban.association.fragment.AssociationRoomFragment
import com.yizhuan.erban.ui.user.adapter.CommonWrapIndicatorAdapter
import com.yizhuan.erban.ui.user.adapter.UserInfoPagerAdapter
import com.yizhuan.erban.ui.widget.magicindicator.MagicIndicator
import com.yizhuan.erban.ui.widget.magicindicator.ViewPagerHelper
import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.CommonNavigator
import com.yizhuan.xchat_android_library.utils.ResUtil
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
class AssociationActivity : BaseViewBindingActivity<ActivityAssociationBinding>() {
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.netease.nim.uikit.StatusBarUtil;
import com.yizhuan.erban.R;
import com.yizhuan.erban.base.BaseActivity;
import com.yizhuan.erban.home.adapter.AssociationAdapter;
import com.yizhuan.erban.module_hall.hall.activity.ModuleClanActivity;
import com.yizhuan.xchat_android_core.module_hall.hall.HallModel;
import com.yizhuan.xchat_android_core.module_hall.hall.bean.ClanInfo;
import com.yizhuan.xchat_android_core.module_hall.hall.bean.ClanListInfo;
import com.yizhuan.xchat_android_core.user.UserInfoUiMgr;
import com.yizhuan.xchat_android_library.utils.ListUtils;
import com.yizhuan.xchat_android_library.utils.ResUtil;
import butterknife.BindView;
import butterknife.ButterKnife;
public class AssociationActivity extends BaseActivity implements SwipeRefreshLayout.OnRefreshListener, BaseQuickAdapter.RequestLoadMoreListener {
@BindView(R.id.recycler_view)
RecyclerView recyclerView;
private AssociationAdapter associationAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_association);
ButterKnife.bind(this);
initWhiteTitleBar(ResUtil.getString(R.string.association_list));
initRecyclerView();
companion object {
fun start(context: Context) {
val intent = Intent(context, AssociationActivity::class.java)
context.startActivity(intent)
}
}
@Override
protected void onResume() {
super.onResume();
loadData();
override fun init() {
initWhiteTitleBar(ResUtil.getString(R.string.association_list))
initDetail()
}
public static void start(Context context) {
Intent intent = new Intent(context, AssociationActivity.class);
context.startActivity(intent);
}
private void initRecyclerView() {
recyclerView.setLayoutManager(new LinearLayoutManager(this));
associationAdapter = new AssociationAdapter();
associationAdapter.setOnItemClickListener((adapter, view, position) -> {
ClanListInfo info = associationAdapter.getItem(position);
if(info != null && info.getClanElderUid() != 0L) {
ModuleClanActivity.start(AssociationActivity.this, info.getClanElderUid());
/**
* 公會
*/
private fun initDetail() {
val viewPager: ViewPager = binding.viewPagerDetail
val magicIndicator: MagicIndicator = binding.magicIndicator
val fragmentList: MutableList<Fragment> = ArrayList()
val pagerAdapter = UserInfoPagerAdapter(supportFragmentManager, fragmentList)
val tagList: MutableList<String> = ArrayList()
tagList.add(getString(R.string.me_association))
tagList.add(getString(R.string.me_room))
fragmentList.add(AssociationFragment.newInstance())
fragmentList.add(AssociationRoomFragment.newInstance())
val commonNavigator = CommonNavigator(context)
commonNavigator.isAdjustMode = true//自我调节位置,实现自我平分
val magicIndicatorAdapter = CommonWrapIndicatorAdapter(context, tagList)
magicIndicatorAdapter.setOnItemSelectListener { position: Int, view: TextView? ->
viewPager.currentItem = position
}
commonNavigator.adapter = magicIndicatorAdapter
magicIndicator.navigator = commonNavigator
commonNavigator.titleContainer.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE
viewPager.adapter = pagerAdapter
ViewPagerHelper.bind(magicIndicator, viewPager)
viewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
override fun onPageScrolled(
position: Int,
positionOffset: Float,
positionOffsetPixels: Int
) {
}
});
recyclerView.setAdapter(associationAdapter);
}
override fun onPageSelected(position: Int) {
viewPager.requestLayout()
}
@SuppressLint("CheckResult")
private void loadData() {
HallModel.get().getClanList()
.compose(bindToLifecycle())
.subscribe(info -> {
if (ListUtils.isListEmpty(info)) {
showNoData(R.drawable.icon_common_failure, ResUtil.getString(R.string.association_list_empty));
} else {
hideStatus();
}
associationAdapter.setNewData(info);
});
}
@Override
public void onLoadMoreRequested() {
override fun onPageScrollStateChanged(state: Int) {}
})
}
@Override
public void onRefresh() {
loadData();
override fun needSteepStateBar(): Boolean {
return true
}
@Override
protected boolean needSteepStateBar() {
return true;
override fun setStatusBar() {
super.setStatusBar()
StatusBarUtil.transparencyBar(this)
StatusBarUtil.StatusBarLightMode(this)
}
@Override
protected void setStatusBar() {
super.setStatusBar();
StatusBarUtil.transparencyBar(this);
StatusBarUtil.StatusBarLightMode(this);
}
}
}

View File

@@ -349,7 +349,7 @@ class MeFragment : BaseFragment(), View.OnClickListener {
)
mBinding.llAssociation.setOnClickListener {
//公會周榜
AssociationActivity.start(context)
context?.let { it1 -> AssociationActivity.start(it1) }
}
}
}

View File

@@ -3,6 +3,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
tools:context=".home.activity.AssociationActivity">
@@ -12,19 +13,21 @@
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_30" />
<com.yizhuan.erban.common.widget.StatusLayout
android:id="@+id/status_layout"
<com.yizhuan.erban.ui.widget.magicindicator.MagicIndicator
android:id="@+id/magicIndicator"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent">
</androidx.recyclerview.widget.RecyclerView>
</com.yizhuan.erban.common.widget.StatusLayout>
android:layout_height="25dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="@dimen/dp_10"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/title_bar"/>
<androidx.viewpager.widget.ViewPager
android:id="@+id/viewPagerDetail"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintTop_toBottomOf="@+id/magicIndicator"
app:layout_constraintBottom_toBottomOf="parent"/>
</LinearLayout>

View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:overScrollMode="never"
android:scrollbars="none" />
</LinearLayout>

View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:overScrollMode="never"
android:scrollbars="none" />
</LinearLayout>

View File

@@ -4920,6 +4920,7 @@
<string name="share_link">複製鏈接</string>
<string name="association_list">公會周榜</string>
<string name="association_list_empty">還沒有公會榜單哦</string>
<string name="association_hall_list_empty">還沒有房間榜單哦</string>
<string name="me_give_gold_empty">暫無轉贈記錄</string>
<string name="password_input_user_id">請輸入用戶ID</string>
<string name="displayed_three_month">僅顯示最近三個月記錄</string>

View File

@@ -3,13 +3,9 @@ package com.yizhuan.xchat_android_core.association
import com.yizhuan.xchat_android_core.base.BaseModel
import com.yizhuan.xchat_android_core.bean.response.ListResult
import com.yizhuan.xchat_android_core.bean.response.ServiceResult
import com.yizhuan.xchat_android_core.home.model.HomeModel
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager
import com.yizhuan.xchat_android_core.module_hall.hall.bean.ClanListInfo
import com.yizhuan.xchat_android_core.utils.net.launchRequest
import com.yizhuan.xchat_android_library.net.rxnet.RxNet
import retrofit2.http.GET
import retrofit2.http.Query
object AssociationModel : BaseModel() {
@@ -20,6 +16,11 @@ object AssociationModel : BaseModel() {
api.getClanList()
}
suspend fun getHallList(): ListResult<HallListInfo>? =
launchRequest {
api.getHallList()
}
private interface Api {
/**
@@ -28,6 +29,12 @@ object AssociationModel : BaseModel() {
@GET("/clan/list")
suspend fun getClanList(): ServiceResult<ListResult<ClanListInfo>>
/**
* 获取牌照房
*/
@GET("/hall/list")
suspend fun getHallList(): ServiceResult<ListResult<HallListInfo>>
}
}

View File

@@ -0,0 +1,19 @@
package com.yizhuan.xchat_android_core.association;
import lombok.Data;
@Data
public class HallListInfo {
private Long hallId;
private String hallName;
private Long clanId;
private int roleType;
private Long ownerUid;
private String ownerNick;
private String ownerAvatar;
private Integer memberCount;
private Long ownerErbanNo;
private Double roomIncome;
private int applyBtnStatus;//0=不显示 1=可申请 2=已申请
}

View File

@@ -10,7 +10,6 @@ import com.yizhuan.xchat_android_core.module_hall.hall.bean.AuthInfo;
import com.yizhuan.xchat_android_core.module_hall.hall.bean.AuthListResult;
import com.yizhuan.xchat_android_core.module_hall.hall.bean.ClanAndHallInfo;
import com.yizhuan.xchat_android_core.module_hall.hall.bean.ClanInfo;
import com.yizhuan.xchat_android_core.module_hall.hall.bean.ClanListInfo;
import com.yizhuan.xchat_android_core.module_hall.hall.bean.HallInfo;
import com.yizhuan.xchat_android_core.module_hall.hall.bean.HallMenuByUidResult;
import com.yizhuan.xchat_android_core.module_hall.hall.bean.ListMemberInfo;

View File

@@ -4,8 +4,6 @@ package com.yizhuan.xchat_android_core.module_hall.hall;
import com.yizhuan.xchat_android_core.module_hall.hall.bean.ApplyResult;
import com.yizhuan.xchat_android_core.module_hall.hall.bean.AuthInfo;
import com.yizhuan.xchat_android_core.module_hall.hall.bean.ClanAndHallInfo;
import com.yizhuan.xchat_android_core.module_hall.hall.bean.ClanInfo;
import com.yizhuan.xchat_android_core.module_hall.hall.bean.ClanListInfo;
import com.yizhuan.xchat_android_core.module_hall.hall.bean.HallInfo;
import com.yizhuan.xchat_android_core.module_hall.hall.bean.ListMemberInfo;
import com.yizhuan.xchat_android_core.module_hall.hall.bean.OptionInfo;

View File

@@ -1,15 +0,0 @@
package com.yizhuan.xchat_android_core.module_hall.hall.bean;
import lombok.Data;
@Data
public class ClanListInfo {
private int clanId;
private long clanElderUid;
private String avatar;
private String name;
private String levelIcon;
private double income;
private int level;
private int applyBtnStatus;//0=不显示 1=可申请 2=已申请
}