首页房间随机逻辑

This commit is contained in:
oujunhui
2020-04-30 21:10:25 +08:00
parent 22f8a303e4
commit 18e3515cf7
4 changed files with 117 additions and 38 deletions

View File

@@ -39,10 +39,12 @@ public class HomeTabHomeFragment extends BaseFragment {
private RecyclerView recyclerView;
private String tabId;
private HomeRoomFragmentAdapter mHomeRoomAdapter;
private List<HomeTabMapInfo> sixRoomsList;
private List<HomeTabMapInfo> allRoomList = new ArrayList<>();
private final int ROOM_COUNT = 6;
private Runnable runnable;
private Handler handler = new Handler();
List<HomeTabMapInfo> sixRoomsList = new ArrayList<>();
public static HomeTabHomeFragment newInstance(int tabId) {
@@ -63,6 +65,7 @@ public class HomeTabHomeFragment extends BaseFragment {
if (getArguments() != null) {
tabId = getArguments().getString(PARAM_TAB_ID);
}
}
@Override
@@ -90,12 +93,7 @@ public class HomeTabHomeFragment extends BaseFragment {
initRecyclerView();
}
/**
* 刷新数据
*/
private void refreshData() {
getData();
}
/**
* 请求数据
@@ -108,20 +106,9 @@ public class HomeTabHomeFragment extends BaseFragment {
.compose(bindUntilEvent(FragmentEvent.DESTROY_VIEW))
.subscribe((serviceResult, throwable) -> {
if (throwable == null) {
int max = getMultipleItemData(serviceResult).size();
int min = 0;
sixRoomsList = new ArrayList<>();
for (int i = 0; i < ROOM_COUNT ; i++) {
Random random = new Random();
int s = random.nextInt(max)%(max-min+1) + min;
sixRoomsList.add(getMultipleItemData(serviceResult).get(s));
}
mHomeRoomAdapter.setNewData(sixRoomsList);
mHomeRoomAdapter.notifyDataSetChanged();
allRoomList.clear();
allRoomList = serviceResult;
refreshRoomData();
} else {
if (!(throwable instanceof CancellationException)) {
toast("请求失败,请稍后再试!!" + throwable.getMessage());
@@ -130,6 +117,15 @@ public class HomeTabHomeFragment extends BaseFragment {
});
}
/**
* 刷新数据
*/
private void refreshRoomData(){
mHomeRoomAdapter.setNewData(getConvertData(allRoomList));
mHomeRoomAdapter.notifyDataSetChanged();
}
private void initRecyclerView() {
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
recyclerView.setItemAnimator(null);
@@ -144,7 +140,6 @@ public class HomeTabHomeFragment extends BaseFragment {
ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
emptyView.setLayoutParams(lp);
mHomeRoomAdapter.setEmptyView(emptyView);
}
@@ -153,25 +148,45 @@ public class HomeTabHomeFragment extends BaseFragment {
* @param itemList
* @return
*/
private List<HomeTabMapInfo> getMultipleItemData(List<HomeTabMapInfo> itemList) {
final int ADD_COUNT = ROOM_COUNT - itemList.size();
for (int i = 0; i < ADD_COUNT; i++) {
HomeTabMapInfo info = new HomeTabMapInfo();
info.setItemType(HomeTabMapInfo.TYPE_EMPTY);
itemList.add(info);
}
private List<HomeTabMapInfo> getConvertData(List<HomeTabMapInfo> itemList) {
sixRoomsList.clear();
int ROOM_COUNT = 6;
for (int i = 0; i < itemList.size(); i++) {
itemList.get(i).setItemType(itemList.get(i).getRoomTitle() == null?HomeTabMapInfo.TYPE_EMPTY:HomeTabMapInfo.TYPE_NORMAL);
itemList.get(i).setItemType(HomeTabMapInfo.TYPE_NORMAL);
}
return itemList;
itemList = randomList(itemList);
if (itemList.size() >= ROOM_COUNT){
for (int i = 0; i < ROOM_COUNT ; i++) {
sixRoomsList.add(itemList.get(i));
}
}else {
while (itemList.size() < ROOM_COUNT){
HomeTabMapInfo info = new HomeTabMapInfo();
info.setItemType(HomeTabMapInfo.TYPE_EMPTY);
itemList.add(info);
}
sixRoomsList = itemList;
}
return sixRoomsList;
}
public List<HomeTabMapInfo> randomList(List<HomeTabMapInfo> sourceList) {
if (sourceList == null || sourceList.size() == 0) {
return sourceList;
}
ArrayList randomList = new ArrayList(sourceList.size());
do {
int randomIndex = Math.abs(new Random().nextInt(sourceList.size()));
randomList.add(sourceList.remove(randomIndex));
} while (sourceList.size() > 0);
return randomList;
}
@Override
public void initiate() {
refreshData();
getData();
}
@Override

View File

@@ -28,6 +28,7 @@ import com.netease.nimlib.sdk.uinfo.model.NimUserInfo;
import com.yizhuan.erban.R;
import com.yizhuan.erban.UIHelper;
import com.yizhuan.erban.avroom.ButtonItemFactory;
import com.yizhuan.erban.avroom.activity.AVRoomActivity;
import com.yizhuan.erban.base.BaseBindingActivity;
import com.yizhuan.erban.common.widget.dialog.CommonPopupDialog;
import com.yizhuan.erban.common.widget.dialog.DialogManager;
@@ -51,11 +52,13 @@ import com.yizhuan.xchat_android_core.auth.AuthModel;
import com.yizhuan.xchat_android_core.community.bean.WorldDynamicBean;
import com.yizhuan.xchat_android_core.im.friend.IMFriendModel;
import com.yizhuan.xchat_android_core.level.UserLevelVo;
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager;
import com.yizhuan.xchat_android_core.noble.NobleUtil;
import com.yizhuan.xchat_android_core.praise.PraiseModel;
import com.yizhuan.xchat_android_core.praise.event.IsLikedEvent;
import com.yizhuan.xchat_android_core.praise.event.PraiseEvent;
import com.yizhuan.xchat_android_core.room.bean.RoomInfo;
import com.yizhuan.xchat_android_core.room.model.AvRoomModel;
import com.yizhuan.xchat_android_core.statistic.StatisticManager;
import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol;
import com.yizhuan.xchat_android_core.user.UserInfoUiMgr;
@@ -151,6 +154,7 @@ public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBindin
if (AuthModel.get().getCurrentUid() == userId) {
identityState = IdentityState.OWN;
mBinding.tvFansCount.setOnClickListener(this);
setWhereVisible(false);
if (bottomViewLayout != null)
bottomViewLayout.setVisibility(View.GONE);
} else {
@@ -159,6 +163,7 @@ public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBindin
} else {
identityState = IdentityState.OTHER;
}
setWhereVisible(true);
if (bottomViewLayout == null) {
View view = mBinding.vsBottomLayout.getViewStub().inflate();
bottomViewLayout = view.findViewById(R.id.bottom_view_layout);
@@ -176,6 +181,14 @@ public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBindin
mBinding.ivEdit.setOnClickListener(this);
mBinding.tvEdit.setOnClickListener(this);
mBinding.tvGiftDetail.setOnClickListener(this);
mBinding.ivWhere.setOnClickListener(this);
}
/**
* 找到TA, 主态不展示
*/
private void setWhereVisible(boolean visible) {
mBinding.ivWhere.setVisibility(visible ? View.VISIBLE : View.GONE);
}
private void getUserInfo(){
@@ -542,6 +555,24 @@ public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBindin
startActivity(new Intent(this,UserGiftActivity.class));
break;
case R.id.iv_where:
getDialogManager().showProgressDialog(this, "请稍后...");
AvRoomModel.get()
.getUserRoom(userId)
.compose(bindToLifecycle())
.subscribe((roomResult, throwable) -> {
if (throwable != null) {
onGetUserRoomFail(throwable.getMessage());
} else if (roomResult != null && roomResult.isSuccess()) {
onGetUserRoom(roomResult.getData());
} else if (roomResult != null && !roomResult.isSuccess()) {
onGetUserRoomFail(roomResult.getError());
} else {
onGetUserRoomFail("未知错误");
}
});
break;
// /**************** 测试代码 **************/
// AVRoomActivity.start(this, 91, mRoomInfo!!.type)
}
@@ -632,4 +663,26 @@ public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBindin
}
}
public void onGetUserRoom(RoomInfo roomInfo) {
getDialogManager().dismissDialog();
RoomInfo current = AvRoomDataManager.get().mCurrentRoomInfo;
if (roomInfo != null && roomInfo.getUid() > 0) {
if (current != null) {
if (current.getUid() == roomInfo.getUid()) {
toast("已经和对方在同一个房间");
return;
}
}
AVRoomActivity.start(this, roomInfo.getUid(), roomInfo.getType());
} else {
toast("对方不在房间内");
}
}
public void onGetUserRoomFail(String msg) {
getDialogManager().dismissDialog();
toast(msg);
}
}

View File

@@ -60,21 +60,32 @@
<TextView
android:id="@+id/tv_nick"
android:layout_width="wrap_content"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginBottom="6dp"
android:drawablePadding="@dimen/space_normal"
android:ellipsize="end"
android:maxLines="1"
android:layout_marginEnd="@dimen/dp_20"
android:textColor="@color/color_333333"
android:textSize="15dp"
app:layout_constraintEnd_toStartOf="@id/iv_where"
android:textStyle="bold"
tools:drawableRight="@drawable/ic_gender_male"
tools:text="King天地为asdasdasdasdsadsadsad"
tools:text="King天地为"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"/>
<ImageView
android:id="@+id/iv_where"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="@id/tv_nick"
app:layout_constraintEnd_toEndOf="parent"
android:src="@drawable/ic_dy_in_room"
/>
<LinearLayout
android:id="@+id/ll_level"
android:layout_width="match_parent"

View File

@@ -41,7 +41,7 @@ public class XChatConstants {
/**
* bugly key (DEBUG)
*/
public static final String BUGLY_KEY_DEBUG = "f251d1616b";//已更改
public static final String BUGLY_KEY_DEBUG = "d2dec194c0";//已更改
/**
* bugly key (RELEASE)