feat:写了接口请求部分,未实现UI等部分;(接口500,下周继续)

This commit is contained in:
Max
2023-12-29 19:46:46 +08:00
parent 24ccadc593
commit 15b317d5d0
9 changed files with 678 additions and 78 deletions

View File

@@ -106,6 +106,11 @@ public class RoomInviteActivity extends BaseMvpActivity<IRoomInviteView, RoomInv
getMvpPresenter().requestChatMemberByPage(mPage, time, onlyManager);
}
@Override
public void onRequestRoomOnlineListSuccess(List<UserInfo> list) {
}
@Override
public void onRequestChatMemberByPageSuccess(List<OnlineChatMember> memberList, int page) {

View File

@@ -11,6 +11,7 @@ import androidx.appcompat.widget.AppCompatImageView;
import androidx.recyclerview.widget.RecyclerView;
import com.chad.library.adapter.base.BaseMultiItemQuickAdapter;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.netease.nim.uikit.impl.cache.NimUserInfoCache;
import com.netease.nimlib.sdk.RequestCallbackWrapper;
@@ -41,7 +42,7 @@ import io.reactivex.disposables.Disposable;
* @author Administrator
* @date 2017/12/4
*/
public class OnlineUserAdapter extends BaseMultiItemQuickAdapter<OnlineChatMember, BaseViewHolder> {
public class OnlineUserAdapter extends BaseQuickAdapter<UserInfo, BaseViewHolder> {
private boolean mIsHomeParty;
private Disposable mDisposable;
@@ -49,9 +50,7 @@ public class OnlineUserAdapter extends BaseMultiItemQuickAdapter<OnlineChatMembe
private OnRoomOnlineNumberChangeListener mListener;
public OnlineUserAdapter(Context context, boolean isHomeParty) {
super(null);
addItemType(OnlineChatMember.NORMAL, R.layout.list_item_online_user);
addItemType(OnlineChatMember.NOBLE, R.layout.list_item_online_user_mystery);
super(R.layout.list_item_online_user);
mIsHomeParty = isHomeParty;
this.context = context;
}
@@ -63,14 +62,19 @@ public class OnlineUserAdapter extends BaseMultiItemQuickAdapter<OnlineChatMembe
}
@Override
protected void convert(@NonNull BaseViewHolder baseViewHolder, OnlineChatMember onlineChatMember) {
if (onlineChatMember != null && onlineChatMember.chatRoomMember != null) {
if (onlineChatMember.getItemType() == OnlineChatMember.NORMAL) {
setNormalData(baseViewHolder, onlineChatMember);
} else {
setMysteryData();
}
protected void convert(@NonNull BaseViewHolder helper, UserInfo item) {
final ImageView sexImage = helper.getView(R.id.sex);
if (item.getGender() == 1) {
sexImage.setVisibility(View.VISIBLE);
sexImage.setImageResource(R.drawable.ic_gender_male);
} else if (item.getGender() == 2) {
sexImage.setVisibility(View.VISIBLE);
sexImage.setImageResource(R.drawable.ic_gender_female);
} else {
sexImage.setVisibility(View.GONE);
}
helper.setText(R.id.nick, RegexUtil.getPrintableString(item.getNick()));
}
private void setMysteryData() {
@@ -239,29 +243,29 @@ public class OnlineUserAdapter extends BaseMultiItemQuickAdapter<OnlineChatMembe
} else if (event == RoomEvent.ROOM_MEMBER_IN) {
updateMemberIn(roomEvent);
} else if (event == RoomEvent.ROOM_MEMBER_EXIT) {
if (mListener != null) {
mListener.onMemberExit(roomEvent.getAccount(), mData);
}
// if (mListener != null) {
// mListener.onMemberExit(roomEvent.getAccount(), mData);
// }
}
});
}
private void updateMemberIn(RoomEvent roomEvent) {
if (mListener != null) {
mListener.onMemberIn(roomEvent.getAccount(), mData);
}
// if (mListener != null) {
// mListener.onMemberIn(roomEvent.getAccount(), mData);
// }
}
private void updateManager(RoomEvent roomEvent) {
if (mListener != null)
mListener.onUpdateMemberManager(roomEvent.getAccount(),
roomEvent.getEvent() == RoomEvent.ROOM_MANAGER_REMOVE, mData);
// if (mListener != null)
// mListener.onUpdateMemberManager(roomEvent.getAccount(),
// roomEvent.getEvent() == RoomEvent.ROOM_MANAGER_REMOVE, mData);
}
private void updateDownUpMic(String account, boolean isUpMic) {
if (mListener != null) {
mListener.onMemberDownUpMic(account, isUpMic, mData);
}
// if (mListener != null) {
// mListener.onMemberDownUpMic(account, isUpMic, mData);
// }
}
public void release() {

View File

@@ -0,0 +1,315 @@
package com.yizhuan.erban.avroom.adapter;
import android.content.Context;
import android.text.TextUtils;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.appcompat.widget.AppCompatImageView;
import androidx.recyclerview.widget.RecyclerView;
import com.chad.library.adapter.base.BaseMultiItemQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.netease.nim.uikit.impl.cache.NimUserInfoCache;
import com.netease.nimlib.sdk.RequestCallbackWrapper;
import com.netease.nimlib.sdk.uinfo.constant.GenderEnum;
import com.netease.nimlib.sdk.uinfo.model.NimUserInfo;
import com.yizhuan.erban.R;
import com.yizhuan.erban.ui.utils.ImageLoadUtils;
import com.yizhuan.erban.ui.widget.NobleAvatarView;
import com.yizhuan.erban.utils.RegexUtil;
import com.yizhuan.xchat_android_core.auth.AuthModel;
import com.yizhuan.xchat_android_core.level.UserLevelResourceType;
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager;
import com.yizhuan.xchat_android_core.manager.IMNetEaseManager;
import com.yizhuan.xchat_android_core.manager.RoomEvent;
import com.yizhuan.xchat_android_core.noble.NobleResourceType;
import com.yizhuan.xchat_android_core.noble.NobleUtil;
import com.yizhuan.xchat_android_core.room.bean.OnlineChatMember;
import com.yizhuan.xchat_android_core.user.bean.UserInfo;
import com.yizhuan.xchat_android_library.utils.ListUtils;
import java.util.List;
import io.reactivex.disposables.Disposable;
/**
* <p> 房间在线人数列表 (上麦,房主,游客,管理员) </p>
*
* @author Administrator
* @date 2017/12/4
*/
public class OnlineUserAdapter2 extends BaseMultiItemQuickAdapter<OnlineChatMember, BaseViewHolder> {
private boolean mIsHomeParty;
private Disposable mDisposable;
private Context context;
private OnRoomOnlineNumberChangeListener mListener;
public OnlineUserAdapter2(Context context, boolean isHomeParty) {
super(null);
addItemType(OnlineChatMember.NORMAL, R.layout.list_item_online_user);
addItemType(OnlineChatMember.NOBLE, R.layout.list_item_online_user_mystery);
mIsHomeParty = isHomeParty;
this.context = context;
}
@Override
public void onAttachedToRecyclerView(@NonNull RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
registerRoomEvent();
}
@Override
protected void convert(@NonNull BaseViewHolder baseViewHolder, OnlineChatMember onlineChatMember) {
if (onlineChatMember != null && onlineChatMember.chatRoomMember != null) {
if (onlineChatMember.getItemType() == OnlineChatMember.NORMAL) {
setNormalData(baseViewHolder, onlineChatMember);
} else {
setMysteryData();
}
}
}
private void setMysteryData() {
//do nothing
}
private void setNormalData(BaseViewHolder baseViewHolder, OnlineChatMember onlineChatMember) {
setSexData(baseViewHolder, onlineChatMember);
ImageView roomOnlineTag = baseViewHolder.getView(R.id.room_online_tag);
ImageView managerLogo = baseViewHolder.getView(R.id.manager_logo);
roomOnlineTag.setVisibility(onlineChatMember.isOnMic ? View.VISIBLE : View.GONE);
managerLogo.setVisibility((onlineChatMember.isAdmin || onlineChatMember.isRoomOwer)
? View.VISIBLE : View.GONE);
managerLogo.setImageResource(onlineChatMember.isAdmin ? R.drawable.icon_admin_logo
: R.drawable.icon_user_list_room_ownner);
baseViewHolder.setText(R.id.nick, RegexUtil.getPrintableString(onlineChatMember.chatRoomMember.getNick()));
NobleAvatarView nobleAvatarView = baseViewHolder.getView(R.id.noble_avatar_view);
nobleAvatarView.setSize(37, 54, 0);
nobleAvatarView.setData(onlineChatMember.chatRoomMember);
// 官字
baseViewHolder.getView(R.id.iv_user_official).setVisibility(onlineChatMember.isOfficial() ? View.VISIBLE : View.GONE);
//经验等级
AppCompatImageView ivUserExper = baseViewHolder.getView(R.id.iv_user_exper);
String experLevelUrl = NobleUtil.getLevel(UserLevelResourceType.EXPER_URL, onlineChatMember.chatRoomMember);
boolean isExperLevelUrlEmpty = TextUtils.isEmpty(experLevelUrl);
ivUserExper.setVisibility(!isExperLevelUrlEmpty ? View.VISIBLE : View.GONE);
if (!isExperLevelUrlEmpty) {
ImageLoadUtils.loadImage(mContext, experLevelUrl, ivUserExper);
}
//魅力等级
AppCompatImageView ivUserCharm = baseViewHolder.getView(R.id.iv_user_charm);
String charmLevelUrl = NobleUtil.getLevel(UserLevelResourceType.CHARM_URL, onlineChatMember.chatRoomMember);
boolean isCharmLevelUrlEmpty = TextUtils.isEmpty(charmLevelUrl);
ivUserCharm.setVisibility(!isCharmLevelUrlEmpty ? View.VISIBLE : View.GONE);
if (!isCharmLevelUrlEmpty) {
ImageLoadUtils.loadImage(mContext, charmLevelUrl, ivUserCharm);
}
// 官方主播铭牌标识
String fixWord = NobleUtil.getLevel(UserInfo.OAC_NAME, onlineChatMember.chatRoomMember);
String iconPic = NobleUtil.getLevel(UserInfo.OAC_ICON, onlineChatMember.chatRoomMember);
View inOfficialMask = baseViewHolder.getView(R.id.in_official_mask);
if (!TextUtils.isEmpty(fixWord) && !TextUtils.isEmpty(iconPic)) {
inOfficialMask.setVisibility(View.VISIBLE);
TextView tvOfficialMask = inOfficialMask.findViewById(R.id.tv_official_mask);
if (tvOfficialMask != null) {
tvOfficialMask.setText(fixWord);
}
ImageView ivOfficialMask = inOfficialMask.findViewById(R.id.iv_official_mask);
if (ivOfficialMask != null) {
ImageLoadUtils.loadImage(mContext, iconPic, ivOfficialMask);
}
} else {
inOfficialMask.setVisibility(View.GONE);
}
// 铭牌
String namePlateWord = NobleUtil.getLevel(UserInfo.NAMEPLATE_WORD, onlineChatMember.chatRoomMember);
String namePlatePic = NobleUtil.getLevel(UserInfo.NAMEPLATE_PIC, onlineChatMember.chatRoomMember);
View inNamePlate = baseViewHolder.getView(R.id.in_nameplate);
if (!TextUtils.isEmpty(namePlateWord) && !TextUtils.isEmpty(namePlatePic)) {
inNamePlate.setVisibility(View.VISIBLE);
TextView tvNamePlate = inNamePlate.findViewById(R.id.tv_official_mask);
if (tvNamePlate != null) {
tvNamePlate.setText(namePlateWord);
}
ImageView ivNamePlate = inNamePlate.findViewById(R.id.iv_official_mask);
if (ivNamePlate != null) {
ImageLoadUtils.loadImage(mContext, namePlatePic, ivNamePlate);
}
} else {
inNamePlate.setVisibility(View.GONE);
}
AppCompatImageView ivUserLevel = baseViewHolder.getView(R.id.iv_noble_level);
String resource = (String) NobleUtil.getResource(NobleResourceType.KEY_BADGE, onlineChatMember.chatRoomMember);
if (TextUtils.isEmpty(resource)) {
ivUserLevel.setVisibility(View.GONE);
return;
}
ivUserLevel.setVisibility(View.VISIBLE);
NobleUtil.loadResource(resource, ivUserLevel);
}
private void setSexData(BaseViewHolder baseViewHolder, OnlineChatMember onlineChatMember) {
final ImageView sexImage = baseViewHolder.getView(R.id.sex);
String gender = NobleUtil.getLevel(UserInfo.GENDER, onlineChatMember.chatRoomMember);
if ("1".equals(gender)) {
sexImage.setVisibility(View.VISIBLE);
sexImage.setImageResource(R.drawable.ic_gender_male);
} else if ("2".equals(gender)) {
sexImage.setVisibility(View.VISIBLE);
sexImage.setImageResource(R.drawable.ic_gender_female);
} else {
NimUserInfo nimUserInfo = NimUserInfoCache.getInstance().getUserInfo(onlineChatMember.chatRoomMember.getAccount());
if (nimUserInfo == null) {
NimUserInfoCache.getInstance().getUserInfoFromRemote(onlineChatMember.chatRoomMember.getAccount(),
new RequestCallbackWrapper<NimUserInfo>() {
@Override
public void onResult(int i, NimUserInfo nimUserInfo, Throwable throwable) {
if (nimUserInfo != null) {
if (nimUserInfo.getGenderEnum() == GenderEnum.MALE) {
sexImage.setVisibility(View.VISIBLE);
sexImage.setImageResource(R.drawable.ic_gender_male);
} else if (nimUserInfo.getGenderEnum() == GenderEnum.FEMALE) {
sexImage.setVisibility(View.VISIBLE);
sexImage.setImageResource(R.drawable.ic_gender_female);
} else {
sexImage.setVisibility(View.GONE);
}
}
}
});
} else {
if (nimUserInfo.getGenderEnum() == GenderEnum.MALE) {
sexImage.setVisibility(View.VISIBLE);
sexImage.setImageResource(R.drawable.ic_gender_male);
} else if (nimUserInfo.getGenderEnum() == GenderEnum.FEMALE) {
sexImage.setVisibility(View.VISIBLE);
sexImage.setImageResource(R.drawable.ic_gender_female);
} else {
sexImage.setVisibility(View.GONE);
}
}
}
}
private void registerRoomEvent() {
mDisposable = IMNetEaseManager.get()
.getChatRoomEventObservable()
.subscribe(roomEvent -> {
if (roomEvent == null) return;
int event = roomEvent.getEvent();
if (roomEvent.getEvent() == RoomEvent.ADD_BLACK_LIST ||
roomEvent.getEvent() == RoomEvent.DOWN_MIC ||
roomEvent.getEvent() == RoomEvent.KICK_OUT_ROOM) {
if (roomEvent.getEvent() == RoomEvent.ADD_BLACK_LIST ||
roomEvent.getEvent() == RoomEvent.KICK_OUT_ROOM) {
if (mListener != null
&& !AvRoomDataManager.get().isOwner(AuthModel.get().getCurrentUid())) {
mListener.addMemberBlack();
return;
}
}
if (ListUtils.isListEmpty(mData)) return;
if (mIsHomeParty && roomEvent.getEvent() == RoomEvent.DOWN_MIC) {
updateDownUpMic(roomEvent.getAccount(), false);
return;
}
if (mListener != null)
mListener.addMemberBlack();
} else if (roomEvent.getEvent() == RoomEvent.ROOM_MANAGER_ADD
|| roomEvent.getEvent() == RoomEvent.ROOM_MANAGER_REMOVE) {
updateManager(roomEvent);
} else if (roomEvent.getEvent() == RoomEvent.UP_MIC) {
updateDownUpMic(roomEvent.getAccount(), true);
} else if (event == RoomEvent.ROOM_MEMBER_IN) {
updateMemberIn(roomEvent);
} else if (event == RoomEvent.ROOM_MEMBER_EXIT) {
if (mListener != null) {
mListener.onMemberExit(roomEvent.getAccount(), mData);
}
}
});
}
private void updateMemberIn(RoomEvent roomEvent) {
if (mListener != null) {
mListener.onMemberIn(roomEvent.getAccount(), mData);
}
}
private void updateManager(RoomEvent roomEvent) {
if (mListener != null)
mListener.onUpdateMemberManager(roomEvent.getAccount(),
roomEvent.getEvent() == RoomEvent.ROOM_MANAGER_REMOVE, mData);
}
private void updateDownUpMic(String account, boolean isUpMic) {
if (mListener != null) {
mListener.onMemberDownUpMic(account, isUpMic, mData);
}
}
public void release() {
if (mDisposable != null) {
mDisposable.dispose();
mDisposable = null;
}
}
public void setListener(OnRoomOnlineNumberChangeListener listener) {
mListener = listener;
}
public interface OnRoomOnlineNumberChangeListener {
/**
* 成员进来回调
*
* @param account
*/
void onMemberIn(String account, List<OnlineChatMember> dataList);
/**
* 成员出去回调
*
* @param account
* @param dataList
*/
void onMemberExit(String account, List<OnlineChatMember> dataList);
/**
* 成员上下麦更新
*
* @param account
* @param isUpMic
* @param dataList
*/
void onMemberDownUpMic(String account, boolean isUpMic,
List<OnlineChatMember> dataList);
/**
* 设置管理员回调
*
* @param account
* @param dataList
*/
void onUpdateMemberManager(String account, boolean isRemoveManager,
List<OnlineChatMember> dataList);
void addMemberBlack();
}
}

View File

@@ -23,6 +23,7 @@ import com.yizhuan.xchat_android_core.manager.AvRoomDataManager;
import com.yizhuan.xchat_android_core.room.bean.OnlineChatMember;
import com.yizhuan.xchat_android_core.room.bean.RoomInfo;
import com.yizhuan.xchat_android_core.super_admin.util.SuperAdminUtil;
import com.yizhuan.xchat_android_core.user.bean.UserInfo;
import com.yizhuan.xchat_android_library.base.factory.CreatePresenter;
import com.yizhuan.xchat_android_library.utils.JavaUtil;
import com.yizhuan.xchat_android_library.utils.ListUtils;
@@ -65,16 +66,16 @@ public class OnlineUserFragment extends BaseMvpFragment<IHomePartyUserListView,
mRefreshLayout.setOnRefreshLoadmoreListener(new OnRefreshLoadmoreListener() {
@Override
public void onLoadmore(RefreshLayout refreshLayout) {
if (!NetworkUtil.isNetAvailable(mContext)) {
mRefreshLayout.finishLoadmore();
return;
}
List<OnlineChatMember> data = mOnlineUserAdapter.getData();
if (ListUtils.isListEmpty(data)) {
mRefreshLayout.finishLoadmore();
return;
}
loadData(data.get(data.size() - 1).chatRoomMember.getEnterTime());
// if (!NetworkUtil.isNetAvailable(mContext)) {
// mRefreshLayout.finishLoadmore();
// return;
// }
// List<OnlineChatMember> data = mOnlineUserAdapter.getData();
// if (ListUtils.isListEmpty(data)) {
// mRefreshLayout.finishLoadmore();
// return;
// }
// loadData(data.get(data.size() - 1).chatRoomMember.getEnterTime());
}
@Override
@@ -111,37 +112,42 @@ public class OnlineUserFragment extends BaseMvpFragment<IHomePartyUserListView,
}
private void loadData(long time) {
getMvpPresenter().requestChatMemberByPage(mPage, time,
mOnlineUserAdapter == null ? null : mOnlineUserAdapter.getData());
getMvpPresenter().requestRoomOnlineList(AvRoomDataManager.get().getRoomUid());
}
@Override
public void onRequestRoomOnlineListSuccess(List<UserInfo> list) {
mOnlineUserAdapter.setNewData(list);
mRefreshLayout.finishRefresh();
}
@Override
public void onRequestChatMemberByPageSuccess(List<OnlineChatMember> chatRoomMemberList, int page) {
mPage = page;
if (!ListUtils.isListEmpty(chatRoomMemberList)) {
//超管不显示
Iterator<OnlineChatMember> iterator = chatRoomMemberList.iterator();
while (iterator.hasNext()) {
OnlineChatMember member = iterator.next();
if (member != null && SuperAdminUtil.isSuperAdmin(member.chatRoomMember)) {
iterator.remove();
}
}
mOnlineUserAdapter.setNewData(chatRoomMemberList);
if (mPage == Constants.PAGE_START) {
mRefreshLayout.finishRefresh();
} else {
mRefreshLayout.finishLoadmore(0);
}
mPage++;
} else {
if (mPage == Constants.PAGE_START) {
mRefreshLayout.finishRefresh();
} else {
mRefreshLayout.finishLoadmore(0);
}
}
// mPage = page;
// if (!ListUtils.isListEmpty(chatRoomMemberList)) {
// //超管不显示
// Iterator<OnlineChatMember> iterator = chatRoomMemberList.iterator();
// while (iterator.hasNext()) {
// OnlineChatMember member = iterator.next();
// if (member != null && SuperAdminUtil.isSuperAdmin(member.chatRoomMember)) {
// iterator.remove();
// }
// }
// mOnlineUserAdapter.setNewData(chatRoomMemberList);
// if (mPage == Constants.PAGE_START) {
// mRefreshLayout.finishRefresh();
// } else {
// mRefreshLayout.finishLoadmore(0);
// }
// mPage++;
// } else {
// if (mPage == Constants.PAGE_START) {
// mRefreshLayout.finishRefresh();
// } else {
// mRefreshLayout.finishLoadmore(0);
// }
// }
}
@Override
@@ -165,23 +171,23 @@ public class OnlineUserFragment extends BaseMvpFragment<IHomePartyUserListView,
@Override
public void onItemClick(BaseQuickAdapter baseQuickAdapter, View view, int position) {
RoomInfo currentRoom = AvRoomDataManager.get().mCurrentRoomInfo;
if (currentRoom != null) {
List<OnlineChatMember> chatRoomMembers = mOnlineUserAdapter.getData();
if (ListUtils.isListEmpty(chatRoomMembers)) return;
OnlineChatMember onlineChatMember = chatRoomMembers.get(position);
ChatRoomMember chatRoomMember = onlineChatMember.chatRoomMember;
if (chatRoomMember != null) {
if (onlineChatMember.getItemType() == OnlineChatMember.NOBLE) {
return;
}
UserInfoDialog.showNewUserInfoDialog(mContext,
JavaUtil.str2long(chatRoomMember.getAccount()),
true,
false,
true,
null);
}
}
// if (currentRoom != null) {
// List<OnlineChatMember> chatRoomMembers = mOnlineUserAdapter.getData();
// if (ListUtils.isListEmpty(chatRoomMembers)) return;
// OnlineChatMember onlineChatMember = chatRoomMembers.get(position);
// ChatRoomMember chatRoomMember = onlineChatMember.chatRoomMember;
// if (chatRoomMember != null) {
// if (onlineChatMember.getItemType() == OnlineChatMember.NOBLE) {
// return;
// }
// UserInfoDialog.showNewUserInfoDialog(mContext,
// JavaUtil.str2long(chatRoomMember.getAccount()),
// true,
// false,
// true,
// null);
// }
// }
}
@Override

View File

@@ -0,0 +1,229 @@
package com.yizhuan.erban.avroom.fragment;
import android.view.View;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.netease.nim.uikit.common.util.sys.NetworkUtil;
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember;
import com.orhanobut.logger.Logger;
import com.scwang.smartrefresh.layout.SmartRefreshLayout;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.scwang.smartrefresh.layout.listener.OnRefreshLoadmoreListener;
import com.yizhuan.erban.R;
import com.yizhuan.erban.avroom.adapter.OnlineUserAdapter2;
import com.yizhuan.erban.avroom.presenter.HomePartyUserListPresenter;
import com.yizhuan.erban.avroom.view.IHomePartyUserListView;
import com.yizhuan.erban.base.BaseMvpFragment;
import com.yizhuan.erban.ui.widget.UserInfoDialog;
import com.yizhuan.xchat_android_core.Constants;
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager;
import com.yizhuan.xchat_android_core.room.bean.OnlineChatMember;
import com.yizhuan.xchat_android_core.room.bean.RoomInfo;
import com.yizhuan.xchat_android_core.super_admin.util.SuperAdminUtil;
import com.yizhuan.xchat_android_core.user.bean.UserInfo;
import com.yizhuan.xchat_android_library.base.factory.CreatePresenter;
import com.yizhuan.xchat_android_library.utils.JavaUtil;
import com.yizhuan.xchat_android_library.utils.ListUtils;
import com.yizhuan.xchat_android_library.utils.ResUtil;
import java.util.Iterator;
import java.util.List;
/**
* <p> 在线用户列表 </p>
*
* @author Administrator
* @date 2017/12/4
*/
@CreatePresenter(HomePartyUserListPresenter.class)
public class OnlineUserFragment2 extends BaseMvpFragment<IHomePartyUserListView, HomePartyUserListPresenter>
implements BaseQuickAdapter.OnItemClickListener, IHomePartyUserListView, OnlineUserAdapter2.OnRoomOnlineNumberChangeListener {
private RecyclerView mRecyclerView;
private SmartRefreshLayout mRefreshLayout;
private OnlineUserAdapter2 mOnlineUserAdapter;
private int mPage = Constants.PAGE_START;
private boolean isShowToUser = false;
@Override
public void onDestroy() {
if (mOnlineUserAdapter != null)
mOnlineUserAdapter.release();
super.onDestroy();
}
@Override
public void onFindViews() {
mRecyclerView = mView.findViewById(R.id.recycler_view);
mRefreshLayout = mView.findViewById(R.id.refresh_layout);
}
@Override
public void onSetListener() {
mRefreshLayout.setOnRefreshLoadmoreListener(new OnRefreshLoadmoreListener() {
@Override
public void onLoadmore(RefreshLayout refreshLayout) {
if (!NetworkUtil.isNetAvailable(mContext)) {
mRefreshLayout.finishLoadmore();
return;
}
List<OnlineChatMember> data = mOnlineUserAdapter.getData();
if (ListUtils.isListEmpty(data)) {
mRefreshLayout.finishLoadmore();
return;
}
loadData(data.get(data.size() - 1).chatRoomMember.getEnterTime());
}
@Override
public void onRefresh(RefreshLayout refreshLayout) {
if (!NetworkUtil.isNetAvailable(mContext)) {
mRefreshLayout.finishRefresh();
return;
}
firstLoad();
}
});
}
@Override
public void initiate() {
mRecyclerView.setLayoutManager(new LinearLayoutManager(mContext));
mOnlineUserAdapter = new OnlineUserAdapter2(mContext, true);
mRecyclerView.setAdapter(mOnlineUserAdapter);
mOnlineUserAdapter.setOnItemClickListener(this);
mOnlineUserAdapter.setListener(this);
firstLoad();
}
@Override
public int getRootLayoutId() {
return R.layout.common_refresh_recycler_view;
}
public void firstLoad() {
mPage = Constants.PAGE_START;
loadData(0);
}
private void loadData(long time) {
getMvpPresenter().requestChatMemberByPage(mPage, time,
mOnlineUserAdapter == null ? null : mOnlineUserAdapter.getData());
}
@Override
public void onRequestRoomOnlineListSuccess(List<UserInfo> list) {
}
@Override
public void onRequestChatMemberByPageSuccess(List<OnlineChatMember> chatRoomMemberList, int page) {
mPage = page;
if (!ListUtils.isListEmpty(chatRoomMemberList)) {
//超管不显示
Iterator<OnlineChatMember> iterator = chatRoomMemberList.iterator();
while (iterator.hasNext()) {
OnlineChatMember member = iterator.next();
if (member != null && SuperAdminUtil.isSuperAdmin(member.chatRoomMember)) {
iterator.remove();
}
}
mOnlineUserAdapter.setNewData(chatRoomMemberList);
if (mPage == Constants.PAGE_START) {
mRefreshLayout.finishRefresh();
} else {
mRefreshLayout.finishLoadmore(0);
}
mPage++;
} else {
if (mPage == Constants.PAGE_START) {
mRefreshLayout.finishRefresh();
} else {
mRefreshLayout.finishLoadmore(0);
}
}
}
@Override
public void onRequestChatMemberByPageFail(String errorStr, int page) {
Logger.i(ResUtil.getString(R.string.avroom_fragment_onlineuserfragment_01) + page);
mPage = page;
if (mPage == Constants.PAGE_START) {
mRefreshLayout.finishRefresh();
} else {
mRefreshLayout.finishLoadmore(0);
}
}
@Override
public void onMemberInRefresh() {
// if (!isResumed()) return;
// if (!isShowToUser()) return;
// firstLoad();
}
@Override
public void onItemClick(BaseQuickAdapter baseQuickAdapter, View view, int position) {
RoomInfo currentRoom = AvRoomDataManager.get().mCurrentRoomInfo;
if (currentRoom != null) {
List<OnlineChatMember> chatRoomMembers = mOnlineUserAdapter.getData();
if (ListUtils.isListEmpty(chatRoomMembers)) return;
OnlineChatMember onlineChatMember = chatRoomMembers.get(position);
ChatRoomMember chatRoomMember = onlineChatMember.chatRoomMember;
if (chatRoomMember != null) {
if (onlineChatMember.getItemType() == OnlineChatMember.NOBLE) {
return;
}
UserInfoDialog.showNewUserInfoDialog(mContext,
JavaUtil.str2long(chatRoomMember.getAccount()),
true,
false,
true,
null);
}
}
}
@Override
public void onMemberIn(String account, List<OnlineChatMember> dataList) {
// if (!isResumed()) return;
// getMvpPresenter().onMemberInRefreshData(account, dataList, mPage);
}
@Override
public void onMemberExit(String account, List<OnlineChatMember> dataList) {
// if (!isResumed()) return;
// if (!isShowToUser()) return;
// firstLoad();
}
@Override
public void onMemberDownUpMic(String account, boolean isUpMic, List<OnlineChatMember> dataList) {
if (!isResumed()) return;
getMvpPresenter().onMemberDownUpMic(account, isUpMic, dataList, mPage);
}
@Override
public void onUpdateMemberManager(String account, boolean isRemoveManager, List<OnlineChatMember> dataList) {
if (!isResumed()) return;
getMvpPresenter().onUpdateMemberManager(account, dataList, isRemoveManager, mPage);
}
@Override
public void addMemberBlack() {
if (!isResumed()) return;
if (!isShowToUser()) return;
firstLoad();
}
public boolean isShowToUser() {
return isShowToUser;
}
}

View File

@@ -51,6 +51,19 @@ public class HomePartyUserListPresenter extends BaseMvpPresenter<IHomePartyUserL
});
}
@SuppressLint("CheckResult")
public void requestRoomOnlineList(long roomUid){
mHomePartyUserListMode.getRoomOnlineList(roomUid).compose(bindToLifecycle()).subscribe((data, throwable) -> {
if (getMvpView() != null) {
if (data != null) {
getMvpView().onRequestRoomOnlineListSuccess(data);
} else {
getMvpView().onRequestChatMemberByPageFail(throwable.getMessage(), 1);
}
}
});
}
public void onMemberDownUpMic(String account, boolean isUpMic, List<OnlineChatMember> dataList,
final int page) {
mHomePartyUserListMode.onMemberDownUpMic(account, isUpMic, dataList)

View File

@@ -3,6 +3,7 @@ package com.yizhuan.erban.avroom.view;
import com.yizhuan.xchat_android_core.room.bean.OnlineChatMember;
import com.yizhuan.xchat_android_core.user.bean.UserInfo;
import com.yizhuan.xchat_android_library.base.IMvpBaseView;
import java.util.List;
@@ -14,6 +15,9 @@ import java.util.List;
* @date 2017/12/8
*/
public interface IHomePartyUserListView extends IMvpBaseView {
void onRequestRoomOnlineListSuccess(List<UserInfo> list);
void onRequestChatMemberByPageSuccess(List<OnlineChatMember> memberList, int page);
void onRequestChatMemberByPageFail(String errorStr, int page);