我收藏的房间列表改版
This commit is contained in:
@@ -2,117 +2,86 @@ package com.mango.moshen.home.activity;
|
|||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.Bundle;
|
import android.graphics.Color;
|
||||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
|
|
||||||
import com.chad.library.adapter.base.BaseQuickAdapter;
|
import androidx.fragment.app.Fragment;
|
||||||
|
import androidx.viewpager.widget.ViewPager;
|
||||||
|
|
||||||
|
import com.mango.moshen.base.BaseViewBindingActivity;
|
||||||
|
import com.mango.moshen.base.TitleBar;
|
||||||
|
import com.mango.moshen.databinding.ActivityCollectionRoomBinding;
|
||||||
|
import com.mango.moshen.ui.user.adapter.UserInfoIndicatorAdapter;
|
||||||
|
import com.mango.moshen.ui.user.adapter.UserInfoPagerAdapter;
|
||||||
|
import com.mango.moshen.ui.widget.magicindicator.ViewPagerHelper;
|
||||||
|
import com.mango.moshen.ui.widget.magicindicator.buildins.commonnavigator.CommonNavigator;
|
||||||
import com.netease.nim.uikit.StatusBarUtil;
|
import com.netease.nim.uikit.StatusBarUtil;
|
||||||
import com.mango.moshen.R;
|
|
||||||
import com.mango.moshen.avroom.activity.AVRoomActivity;
|
|
||||||
import com.mango.moshen.base.BaseActivity;
|
|
||||||
import com.mango.moshen.home.adapter.CollectionRoomAdapter;
|
|
||||||
import com.mango.core.home.bean.HomeRoomInfo;
|
|
||||||
import com.mango.core.home.model.CollectionRoomModel;
|
|
||||||
import com.mango.core.auth.AuthModel;
|
|
||||||
import com.mango.core.statistic.StatisticManager;
|
|
||||||
import com.mango.core.statistic.protocol.StatisticsProtocol;
|
|
||||||
import com.mango.xchat_android_library.utils.ListUtils;
|
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import butterknife.BindView;
|
public class CollectionRoomActivity extends BaseViewBindingActivity<ActivityCollectionRoomBinding> {
|
||||||
import butterknife.ButterKnife;
|
|
||||||
|
|
||||||
public class CollectionRoomActivity extends BaseActivity implements SwipeRefreshLayout.OnRefreshListener,BaseQuickAdapter.RequestLoadMoreListener{
|
|
||||||
|
|
||||||
|
|
||||||
@BindView(R.id.recycler_view)
|
private UserInfoPagerAdapter pagerAdapter;
|
||||||
RecyclerView recyclerView;
|
|
||||||
|
|
||||||
@BindView(R.id.swipe_refresh)
|
|
||||||
SwipeRefreshLayout swipeRefresh;
|
|
||||||
|
|
||||||
private CollectionRoomAdapter roomAdapter;
|
|
||||||
private int pageSize = 50;
|
|
||||||
private int page = 1;
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
|
||||||
super.onCreate(savedInstanceState);
|
|
||||||
setContentView(R.layout.activity_collection_room);
|
|
||||||
ButterKnife.bind(this);
|
|
||||||
initWhiteTitleBar("我收藏的房间");
|
|
||||||
initRecyclerView();
|
|
||||||
swipeRefresh.setOnRefreshListener(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void onResume() {
|
|
||||||
super.onResume();
|
|
||||||
loadData();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void start(Context context) {
|
public static void start(Context context) {
|
||||||
Intent intent = new Intent(context, CollectionRoomActivity.class);
|
Intent intent = new Intent(context, CollectionRoomActivity.class);
|
||||||
context.startActivity(intent);
|
context.startActivity(intent);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initRecyclerView() {
|
@Override
|
||||||
recyclerView.setLayoutManager(new LinearLayoutManager(this));
|
public void init() {
|
||||||
roomAdapter = new CollectionRoomAdapter();
|
initWhiteTitleBar("我收藏的房间");
|
||||||
roomAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() {
|
initViewPager();
|
||||||
|
mTitleBar.addAction(new TitleBar.TextAction("管理", Color.parseColor("#999999")) {
|
||||||
@Override
|
@Override
|
||||||
public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) {
|
public void performAction(View view) {
|
||||||
HomeRoomInfo fansRoomListBean = (HomeRoomInfo) adapter.getItem(position);
|
((CollectionRoomFragment) pagerAdapter.getItem(getBinding().viewPager.getCurrentItem())).changeManageMode();
|
||||||
switch (view.getId()){
|
|
||||||
case R.id.cl_root:
|
|
||||||
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_ME_INTO_FOLLOW_ROOM_CLICK, "我页_进入关注房间");
|
|
||||||
AVRoomActivity.start(CollectionRoomActivity.this,fansRoomListBean.getRoomUid() );
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
recyclerView.setAdapter(roomAdapter);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void initViewPager() {
|
||||||
|
List<Fragment> fragmentList = new ArrayList<>(3);
|
||||||
|
fragmentList.add(CollectionRoomFragment.newInstance(0));
|
||||||
|
fragmentList.add(CollectionRoomFragment.newInstance(4));
|
||||||
|
pagerAdapter = new UserInfoPagerAdapter(getSupportFragmentManager(), fragmentList);
|
||||||
|
final List<String> tagList = new ArrayList<>(3);
|
||||||
|
tagList.add("派对房");
|
||||||
|
tagList.add("直播房");
|
||||||
|
CommonNavigator commonNavigator = new CommonNavigator(context);
|
||||||
|
commonNavigator.setTitleWrapContent(true);
|
||||||
|
UserInfoIndicatorAdapter magicIndicatorAdapter = new UserInfoIndicatorAdapter(context, tagList);
|
||||||
|
magicIndicatorAdapter.setOnItemSelectListener((position, view) -> {
|
||||||
|
getBinding().viewPager.setCurrentItem(position);
|
||||||
|
});
|
||||||
|
magicIndicatorAdapter.setMinScale(1f);
|
||||||
|
magicIndicatorAdapter.setTextSize(14);
|
||||||
|
commonNavigator.setAdapter(magicIndicatorAdapter);
|
||||||
|
getBinding().magicIndicator.setNavigator(commonNavigator);
|
||||||
|
commonNavigator.getTitleContainer().setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE);
|
||||||
|
getBinding().viewPager.setOffscreenPageLimit(2);
|
||||||
|
getBinding().viewPager.setAdapter(pagerAdapter);
|
||||||
|
ViewPagerHelper.bind(getBinding().magicIndicator, getBinding().viewPager);
|
||||||
|
getBinding().viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
|
||||||
|
@Override
|
||||||
|
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
|
||||||
|
|
||||||
private void loadData() {
|
}
|
||||||
|
|
||||||
CollectionRoomModel.get().getCollectionRoomList(AuthModel.get().getCurrentUid(),page,pageSize)
|
@Override
|
||||||
.subscribe((serviceResult, throwable) -> {
|
public void onPageSelected(int position) {
|
||||||
if (throwable != null) {
|
((CollectionRoomFragment) pagerAdapter.getItem(0)).hideManageMode();
|
||||||
swipeRefresh.setRefreshing(false);
|
((CollectionRoomFragment) pagerAdapter.getItem(1)).hideManageMode();
|
||||||
} else {
|
}
|
||||||
swipeRefresh.setRefreshing(false);
|
|
||||||
List<HomeRoomInfo> info = serviceResult.getFansRoomList();
|
|
||||||
if (ListUtils.isListEmpty(info)) {
|
|
||||||
showNoData(R.drawable.icon_common_failure, "亲爱的用户,你还没有收藏哦!");
|
|
||||||
}else {
|
|
||||||
hideStatus();
|
|
||||||
}
|
|
||||||
roomAdapter.setNewData(info);
|
|
||||||
roomAdapter.notifyDataSetChanged();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPageScrollStateChanged(int state) {
|
||||||
|
|
||||||
@Override
|
}
|
||||||
public void onLoadMoreRequested() {
|
});
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onRefresh() {
|
|
||||||
loadData();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -126,4 +95,5 @@ public class CollectionRoomActivity extends BaseActivity implements SwipeRefres
|
|||||||
StatusBarUtil.transparencyBar(this);
|
StatusBarUtil.transparencyBar(this);
|
||||||
StatusBarUtil.StatusBarLightMode(this);
|
StatusBarUtil.StatusBarLightMode(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -0,0 +1,177 @@
|
|||||||
|
package com.mango.moshen.home.activity;
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.CheckBox;
|
||||||
|
import android.widget.CompoundButton;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
||||||
|
|
||||||
|
import com.mango.core.auth.AuthModel;
|
||||||
|
import com.mango.core.home.bean.HomeRoomInfo;
|
||||||
|
import com.mango.core.home.model.CollectionRoomModel;
|
||||||
|
import com.mango.core.statistic.StatisticManager;
|
||||||
|
import com.mango.core.statistic.protocol.StatisticsProtocol;
|
||||||
|
import com.mango.moshen.R;
|
||||||
|
import com.mango.moshen.avroom.activity.AVRoomActivity;
|
||||||
|
import com.mango.moshen.base.BaseFragment;
|
||||||
|
import com.mango.moshen.common.EmptyViewHelper;
|
||||||
|
import com.mango.moshen.home.adapter.CollectionRoomAdapter;
|
||||||
|
import com.mango.xchat_android_library.utils.ListUtils;
|
||||||
|
import com.mango.xchat_android_library.utils.SingleToastUtil;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
|
public class CollectionRoomFragment extends BaseFragment implements SwipeRefreshLayout.OnRefreshListener {
|
||||||
|
|
||||||
|
|
||||||
|
private final int pageSize = 500;
|
||||||
|
private final int page = 1;
|
||||||
|
private RecyclerView recyclerView;
|
||||||
|
private SwipeRefreshLayout swipeRefresh;
|
||||||
|
private CheckBox cbSelectAll;
|
||||||
|
private TextView stvDelete;
|
||||||
|
private View flOperate;
|
||||||
|
private CollectionRoomAdapter roomAdapter;
|
||||||
|
private boolean isManageMode = false;
|
||||||
|
|
||||||
|
private CompoundButton.OnCheckedChangeListener onCheckedChangeListener = (buttonView, isChecked) -> {
|
||||||
|
if (roomAdapter != null) {
|
||||||
|
for (HomeRoomInfo roomInfo : roomAdapter.getData()) {
|
||||||
|
roomInfo.setChecked(isChecked);
|
||||||
|
}
|
||||||
|
roomAdapter.notifyDataSetChanged();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
public static CollectionRoomFragment newInstance(int type) {
|
||||||
|
Bundle args = new Bundle();
|
||||||
|
args.putInt("type", type);
|
||||||
|
CollectionRoomFragment fragment = new CollectionRoomFragment();
|
||||||
|
fragment.setArguments(args);
|
||||||
|
return fragment;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void initiate() {
|
||||||
|
initRecyclerView();
|
||||||
|
swipeRefresh.setOnRefreshListener(this);
|
||||||
|
loadData();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getRootLayoutId() {
|
||||||
|
return R.layout.fragment_collection_room;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFindViews() {
|
||||||
|
recyclerView = mView.findViewById(R.id.recycler_view);
|
||||||
|
swipeRefresh = mView.findViewById(R.id.swipe_refresh);
|
||||||
|
cbSelectAll = mView.findViewById(R.id.cb_select_all);
|
||||||
|
stvDelete = mView.findViewById(R.id.stv_delete);
|
||||||
|
flOperate = mView.findViewById(R.id.fl_operate);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressLint("CheckResult")
|
||||||
|
@Override
|
||||||
|
public void onSetListener() {
|
||||||
|
cbSelectAll.setOnCheckedChangeListener(onCheckedChangeListener);
|
||||||
|
stvDelete.setOnClickListener(v -> {
|
||||||
|
StringBuilder roomUids = new StringBuilder();
|
||||||
|
for (HomeRoomInfo roomInfo : roomAdapter.getData()) {
|
||||||
|
if (roomInfo.isChecked()) {
|
||||||
|
if (roomUids.length() > 0) {
|
||||||
|
roomUids.append(",");
|
||||||
|
}
|
||||||
|
roomUids.append(roomInfo.getRoomUid());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (roomUids.length() <= 1) {
|
||||||
|
SingleToastUtil.showToast("请选择要删除的房间!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
CollectionRoomModel.get()
|
||||||
|
.deleteFollowRoom(roomUids.toString())
|
||||||
|
.subscribe(s -> {
|
||||||
|
SingleToastUtil.showToast("删除成功!");
|
||||||
|
loadData();
|
||||||
|
changeManageMode();
|
||||||
|
}, throwable -> SingleToastUtil.showToast(throwable.getMessage()));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public void changeManageMode() {
|
||||||
|
if (roomAdapter != null && !ListUtils.isListEmpty(roomAdapter.getData())) {
|
||||||
|
this.isManageMode = !isManageMode;
|
||||||
|
roomAdapter.setManageMode(isManageMode);
|
||||||
|
flOperate.setVisibility(isManageMode ? View.VISIBLE : View.GONE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void hideManageMode() {
|
||||||
|
if (isManageMode) {
|
||||||
|
changeManageMode();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initRecyclerView() {
|
||||||
|
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
|
||||||
|
roomAdapter = new CollectionRoomAdapter();
|
||||||
|
roomAdapter.setOnCheckedChangeListener((buttonView, isChecked) -> {
|
||||||
|
boolean isCheckedAll = true;
|
||||||
|
for (HomeRoomInfo roomInfo : roomAdapter.getData()) {
|
||||||
|
if (!roomInfo.isChecked()) {
|
||||||
|
isCheckedAll = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (isCheckedAll != cbSelectAll.isChecked()) {
|
||||||
|
cbSelectAll.setOnCheckedChangeListener(null);
|
||||||
|
cbSelectAll.setChecked(isCheckedAll);
|
||||||
|
cbSelectAll.setOnCheckedChangeListener(onCheckedChangeListener);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
roomAdapter.setOnItemClickListener((adapter, view, position) -> {
|
||||||
|
HomeRoomInfo fansRoomListBean = (HomeRoomInfo) adapter.getItem(position);
|
||||||
|
if (!isManageMode && fansRoomListBean != null) {
|
||||||
|
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_ME_INTO_FOLLOW_ROOM_CLICK, "我页_进入关注房间");
|
||||||
|
AVRoomActivity.start(getContext(), fansRoomListBean.getRoomUid());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
recyclerView.setAdapter(roomAdapter);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@SuppressLint("CheckResult")
|
||||||
|
private void loadData() {
|
||||||
|
CollectionRoomModel.get().getCollectionRoomList(AuthModel.get().getCurrentUid(), requireArguments().getInt("type"), page, pageSize)
|
||||||
|
.subscribe((serviceResult, throwable) -> {
|
||||||
|
if (throwable != null) {
|
||||||
|
swipeRefresh.setRefreshing(false);
|
||||||
|
} else {
|
||||||
|
swipeRefresh.setRefreshing(false);
|
||||||
|
List<HomeRoomInfo> info = serviceResult.getFansRoomList();
|
||||||
|
if (ListUtils.isListEmpty(info)) {
|
||||||
|
if (roomAdapter.getEmptyView() == null) {
|
||||||
|
roomAdapter.setEmptyView(EmptyViewHelper.createEmptyView(mContext, "亲爱的用户,你还没有收藏哦!"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
roomAdapter.setNewData(info);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onRefresh() {
|
||||||
|
loadData();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@@ -1,12 +1,14 @@
|
|||||||
package com.mango.moshen.home.adapter;
|
package com.mango.moshen.home.adapter;
|
||||||
|
|
||||||
|
import android.widget.CheckBox;
|
||||||
|
import android.widget.CompoundButton;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
|
|
||||||
import com.chad.library.adapter.base.BaseQuickAdapter;
|
import com.chad.library.adapter.base.BaseQuickAdapter;
|
||||||
import com.chad.library.adapter.base.BaseViewHolder;
|
import com.chad.library.adapter.base.BaseViewHolder;
|
||||||
|
import com.mango.core.home.bean.HomeRoomInfo;
|
||||||
import com.mango.moshen.R;
|
import com.mango.moshen.R;
|
||||||
import com.mango.moshen.ui.utils.ImageLoadUtilsV2;
|
import com.mango.moshen.ui.utils.ImageLoadUtilsV2;
|
||||||
import com.mango.core.home.bean.HomeRoomInfo;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by yudi
|
* Created by yudi
|
||||||
@@ -14,22 +16,37 @@ import com.mango.core.home.bean.HomeRoomInfo;
|
|||||||
*/
|
*/
|
||||||
public class CollectionRoomAdapter extends BaseQuickAdapter<HomeRoomInfo, BaseViewHolder> {
|
public class CollectionRoomAdapter extends BaseQuickAdapter<HomeRoomInfo, BaseViewHolder> {
|
||||||
|
|
||||||
|
private boolean isManageMode;
|
||||||
|
private CompoundButton.OnCheckedChangeListener onCheckedChangeListener;
|
||||||
|
|
||||||
public CollectionRoomAdapter() {
|
public CollectionRoomAdapter() {
|
||||||
super(R.layout.item_room_collection);
|
super(R.layout.item_room_collection);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOnCheckedChangeListener(CompoundButton.OnCheckedChangeListener onCheckedChangeListener) {
|
||||||
|
this.onCheckedChangeListener = onCheckedChangeListener;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setManageMode(boolean manageMode) {
|
||||||
|
isManageMode = manageMode;
|
||||||
|
notifyDataSetChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void convert(BaseViewHolder helper, HomeRoomInfo item) {
|
protected void convert(BaseViewHolder helper, HomeRoomInfo item) {
|
||||||
|
|
||||||
helper.setText(R.id.tv_room_name,item.getRoomName())
|
helper.setText(R.id.tv_room_name, item.getRoomName())
|
||||||
.setText(R.id.tv_room_id,"ID:"+item.getErbanNo())
|
.setText(R.id.tv_room_id, "ID:" + item.getErbanNo())
|
||||||
.setText(R.id.tv_room_online_num,item.getRoomOnlineNum() +"");
|
.setText(R.id.tv_room_online_num, item.getRoomOnlineNum() + "");
|
||||||
ImageView imageView = helper.getView(R.id.rriv_room_img);
|
ImageView imageView = helper.getView(R.id.rriv_room_img);
|
||||||
ImageLoadUtilsV2.loadImage(imageView, item.getRoomAvatar());
|
ImageLoadUtilsV2.loadImage(imageView, item.getRoomAvatar());
|
||||||
|
|
||||||
helper.addOnClickListener(R.id.cl_root);
|
CheckBox checkBox = helper.getView(R.id.cb_collect);
|
||||||
|
helper.setGone(R.id.cb_collect, isManageMode);
|
||||||
|
checkBox.setChecked(item.isChecked());
|
||||||
|
checkBox.setOnCheckedChangeListener((buttonView, isChecked) -> {
|
||||||
|
item.setChecked(isChecked);
|
||||||
|
onCheckedChangeListener.onCheckedChanged(buttonView, isChecked);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -6,9 +6,12 @@ import androidx.fragment.app.FragmentManager
|
|||||||
import androidx.fragment.app.FragmentPagerAdapter
|
import androidx.fragment.app.FragmentPagerAdapter
|
||||||
|
|
||||||
@SuppressLint("WrongConstant")
|
@SuppressLint("WrongConstant")
|
||||||
class UserInfoPagerAdapter(fm:FragmentManager, private val list:List<Fragment>) :FragmentPagerAdapter(fm,
|
class UserInfoPagerAdapter(fm: FragmentManager, private val list: List<Fragment>) :
|
||||||
BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT){
|
FragmentPagerAdapter(
|
||||||
override fun getCount()=list.size
|
fm,
|
||||||
|
BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
|
||||||
|
) {
|
||||||
|
override fun getCount() = list.size
|
||||||
|
|
||||||
override fun getItem(position: Int)=list[position]
|
override fun getItem(position: Int) = list[position]
|
||||||
}
|
}
|
BIN
app/src/main/res/drawable-xhdpi/ic_collect_checked.png
Normal file
BIN
app/src/main/res/drawable-xhdpi/ic_collect_checked.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
BIN
app/src/main/res/drawable-xhdpi/ic_collect_unchecked.png
Normal file
BIN
app/src/main/res/drawable-xhdpi/ic_collect_unchecked.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1022 B |
8
app/src/main/res/drawable/selector_check_box_collect.xml
Normal file
8
app/src/main/res/drawable/selector_check_box_collect.xml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
|
||||||
|
<item android:drawable="@drawable/ic_collect_checked" android:state_checked="true" />
|
||||||
|
|
||||||
|
<item android:drawable="@drawable/ic_collect_unchecked" />
|
||||||
|
|
||||||
|
</selector>
|
@@ -3,36 +3,26 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:background="@color/bg_normal_1c1b22"
|
android:background="@color/bg_normal_1c1b22"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical">
|
||||||
>
|
|
||||||
|
|
||||||
<com.mango.moshen.base.TitleBar
|
<com.mango.moshen.base.TitleBar
|
||||||
android:id="@+id/title_bar"
|
android:id="@+id/title_bar"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/dp_30"
|
android:layout_marginTop="@dimen/dp_30" />
|
||||||
/>
|
|
||||||
|
|
||||||
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
<com.mango.moshen.ui.widget.magicindicator.MagicIndicator
|
||||||
android:id="@+id/swipe_refresh"
|
android:id="@+id/magic_indicator"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="20dp"
|
||||||
|
android:layout_gravity="center_horizontal"
|
||||||
|
android:paddingLeft="10dp"
|
||||||
|
android:paddingRight="10dp" />
|
||||||
|
|
||||||
|
|
||||||
|
<androidx.viewpager.widget.ViewPager
|
||||||
|
android:id="@+id/view_pager"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent" />
|
||||||
>
|
|
||||||
|
|
||||||
<com.mango.moshen.common.widget.StatusLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:id="@+id/status_layout">
|
|
||||||
|
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
|
||||||
android:id="@+id/recycler_view"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
>
|
|
||||||
|
|
||||||
</androidx.recyclerview.widget.RecyclerView>
|
|
||||||
|
|
||||||
</com.mango.moshen.common.widget.StatusLayout>
|
|
||||||
|
|
||||||
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
61
app/src/main/res/layout/fragment_collection_room.xml
Normal file
61
app/src/main/res/layout/fragment_collection_room.xml
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||||
|
android:id="@+id/swipe_refresh"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="0dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:background="@color/bg_normal_1c1b22">
|
||||||
|
|
||||||
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
|
android:id="@+id/recycler_view"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent" />
|
||||||
|
|
||||||
|
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:id="@+id/fl_operate"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="60dp"
|
||||||
|
android:background="@drawable/shape_white_top_10dp"
|
||||||
|
android:visibility="gone">
|
||||||
|
|
||||||
|
<CheckBox
|
||||||
|
android:id="@+id/cb_select_all"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="start|center_vertical"
|
||||||
|
android:layout_marginStart="15dp"
|
||||||
|
android:button="@null"
|
||||||
|
android:checked="false"
|
||||||
|
android:drawableStart="@drawable/selector_check_box_collect"
|
||||||
|
android:drawablePadding="12dp"
|
||||||
|
android:text="全选"
|
||||||
|
android:textColor="@color/color_333333"
|
||||||
|
android:textSize="16sp" />
|
||||||
|
|
||||||
|
|
||||||
|
<com.coorchice.library.SuperTextView
|
||||||
|
android:id="@+id/stv_delete"
|
||||||
|
android:layout_width="72dp"
|
||||||
|
android:layout_height="24dp"
|
||||||
|
android:layout_gravity="end|center_vertical"
|
||||||
|
android:layout_marginEnd="15dp"
|
||||||
|
android:background="@drawable/shape_white_8dp_round"
|
||||||
|
android:gravity="center"
|
||||||
|
android:text="删除"
|
||||||
|
android:textColor="#FB486A"
|
||||||
|
android:textSize="14sp"
|
||||||
|
app:corner="20dp"
|
||||||
|
app:stroke_color="#FB486A"
|
||||||
|
app:stroke_width="1dp" />
|
||||||
|
|
||||||
|
</FrameLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
@@ -576,7 +576,7 @@
|
|||||||
<!-- 输入框提示文字颜色 -->
|
<!-- 输入框提示文字颜色 -->
|
||||||
<color name="text_hint_555574">#BABBCD</color>
|
<color name="text_hint_555574">#BABBCD</color>
|
||||||
<!-- 分隔线颜色 -->
|
<!-- 分隔线颜色 -->
|
||||||
<color name="line_353548">#FFE8E8E8</color>
|
<color name="line_353548">#EAEAF1</color>
|
||||||
<!-- 一般用于10xp或20xp的分隔线颜色 -->
|
<!-- 一般用于10xp或20xp的分隔线颜色 -->
|
||||||
<color name="line_height_201F27">#FFEFEFEF</color>
|
<color name="line_height_201F27">#FFEFEFEF</color>
|
||||||
<!-- 弹窗取消按钮文字颜色 -->
|
<!-- 弹窗取消按钮文字颜色 -->
|
||||||
|
@@ -7,15 +7,28 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
tools:background="@color/bg_normal_1c1b22">
|
tools:background="@color/bg_normal_1c1b22">
|
||||||
|
|
||||||
|
<CheckBox
|
||||||
|
android:id="@+id/cb_collect"
|
||||||
|
android:layout_width="22dp"
|
||||||
|
android:layout_height="22dp"
|
||||||
|
android:layout_marginStart="17dp"
|
||||||
|
android:button="@null"
|
||||||
|
android:drawableStart="@drawable/selector_check_box_collect"
|
||||||
|
android:visibility="gone"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
<com.mango.moshen.common.widget.CircleImageView
|
<com.mango.moshen.common.widget.CircleImageView
|
||||||
android:id="@+id/rriv_room_img"
|
android:id="@+id/rriv_room_img"
|
||||||
android:layout_width="@dimen/dp_45"
|
android:layout_width="@dimen/dp_45"
|
||||||
android:layout_height="@dimen/dp_45"
|
android:layout_height="@dimen/dp_45"
|
||||||
android:layout_marginStart="15dp"
|
android:layout_marginStart="12dp"
|
||||||
android:layout_marginTop="@dimen/dp_10"
|
android:layout_marginTop="@dimen/dp_10"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toEndOf="@id/cb_collect"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
app:layout_goneMarginStart="15dp"
|
||||||
tools:src="@drawable/default_avatar" />
|
tools:src="@drawable/default_avatar" />
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
@@ -33,8 +46,8 @@
|
|||||||
android:id="@+id/tv_room_name"
|
android:id="@+id/tv_room_name"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:textColor="@color/text_title_white"
|
android:textColor="@color/color_333333"
|
||||||
android:textSize="@dimen/sp_15"
|
android:textSize="@dimen/sp_14"
|
||||||
tools:text="Sh.一笑倾城大熊熊"
|
tools:text="Sh.一笑倾城大熊熊"
|
||||||
|
|
||||||
/>
|
/>
|
||||||
@@ -44,8 +57,8 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/dp_4"
|
android:layout_marginTop="@dimen/dp_4"
|
||||||
android:textColor="@color/text_normal_c6c6e9"
|
android:textColor="@color/color_666666"
|
||||||
android:textSize="@dimen/sp_13"
|
android:textSize="@dimen/sp_12"
|
||||||
tools:text="ID:8695" />
|
tools:text="ID:8695" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@@ -72,15 +85,12 @@
|
|||||||
android:textColor="@color/text_secondary_4f516a"
|
android:textColor="@color/text_secondary_4f516a"
|
||||||
android:textSize="@dimen/sp_12"
|
android:textSize="@dimen/sp_12"
|
||||||
app:layout_constraintBottom_toBottomOf="@id/ll_room_info"
|
app:layout_constraintBottom_toBottomOf="@id/ll_room_info"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent" />
|
||||||
|
|
||||||
/>
|
|
||||||
|
|
||||||
|
|
||||||
<View
|
<View
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="1dp"
|
android:layout_height="1dp"
|
||||||
android:layout_marginTop="@dimen/dp_11"
|
android:layout_marginTop="@dimen/dp_12"
|
||||||
android:layout_marginEnd="@dimen/dp_15"
|
android:layout_marginEnd="@dimen/dp_15"
|
||||||
android:background="@color/line_353548"
|
android:background="@color/line_353548"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
@@ -49,6 +49,7 @@ public class HomeRoomInfo implements MultiItemEntity, Serializable {
|
|||||||
private String failContext;
|
private String failContext;
|
||||||
private boolean isPick;
|
private boolean isPick;
|
||||||
private boolean needOpenSelfRoom;
|
private boolean needOpenSelfRoom;
|
||||||
|
private boolean isChecked;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getItemType() {
|
public int getItemType() {
|
||||||
|
@@ -19,6 +19,10 @@ public class CollectionRoomModel extends BaseModel {
|
|||||||
private volatile static CollectionRoomModel model;
|
private volatile static CollectionRoomModel model;
|
||||||
private Api api;
|
private Api api;
|
||||||
|
|
||||||
|
private CollectionRoomModel() {
|
||||||
|
api = RxNet.create(Api.class);
|
||||||
|
}
|
||||||
|
|
||||||
public static CollectionRoomModel get() {
|
public static CollectionRoomModel get() {
|
||||||
if (model == null) {
|
if (model == null) {
|
||||||
synchronized (CollectionRoomModel.class) {
|
synchronized (CollectionRoomModel.class) {
|
||||||
@@ -30,17 +34,13 @@ public class CollectionRoomModel extends BaseModel {
|
|||||||
return model;
|
return model;
|
||||||
}
|
}
|
||||||
|
|
||||||
private CollectionRoomModel() {
|
|
||||||
api = RxNet.create(Api.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取收藏房间列表
|
* 获取收藏房间列表
|
||||||
*
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public Single<CollectionRoomInfo> getCollectionRoomList(long uid,int page,int pageSize) {
|
public Single<CollectionRoomInfo> getCollectionRoomList(long uid, int roomType, int page, int pageSize) {
|
||||||
return api.getCollectionRoomList(String.valueOf(uid), String.valueOf(page), String.valueOf(pageSize))
|
return api.getCollectionRoomList(String.valueOf(uid), roomType, String.valueOf(page), String.valueOf(pageSize))
|
||||||
.compose(RxHelper.handleBeanData())
|
.compose(RxHelper.handleBeanData())
|
||||||
.compose(RxHelper.handleSchedulers());
|
.compose(RxHelper.handleSchedulers());
|
||||||
}
|
}
|
||||||
@@ -50,31 +50,31 @@ public class CollectionRoomModel extends BaseModel {
|
|||||||
*
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public Single<String> followRoom(String type,long roomUid){
|
public Single<String> followRoom(String type, long roomUid) {
|
||||||
long uid = AuthModel.get().getCurrentUid();
|
long uid = AuthModel.get().getCurrentUid();
|
||||||
String ticket = AuthModel.get().getTicket();
|
String ticket = AuthModel.get().getTicket();
|
||||||
return api.followRoom(String.valueOf(uid),String.valueOf(roomUid),type,ticket)
|
return api.followRoom(String.valueOf(uid), String.valueOf(roomUid), type, ticket)
|
||||||
.flatMap(new Function<ServiceResult<String>, SingleSource<String>>() {
|
.compose(RxHelper.handleStringData())
|
||||||
@Override
|
|
||||||
public SingleSource<String> apply(ServiceResult<String> stringServiceResult) throws Exception {
|
|
||||||
if (stringServiceResult.isSuccess()) {
|
|
||||||
return Single.just(stringServiceResult.getMessage());
|
|
||||||
}else {
|
|
||||||
return Single.error(new Throwable(stringServiceResult.getMessage()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.doOnSuccess(s -> {
|
|
||||||
|
|
||||||
})
|
|
||||||
.compose(RxHelper.handleSchedulers());
|
.compose(RxHelper.handleSchedulers());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除收藏房间,type固定为3
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public Single<String> deleteFollowRoom(String roomUids) {
|
||||||
|
long uid = AuthModel.get().getCurrentUid();
|
||||||
|
return api.deleteFollowRoom(String.valueOf(uid), roomUids, "3")
|
||||||
|
.compose(RxHelper.handleStringData())
|
||||||
|
.compose(RxHelper.handleSchedulers());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private interface Api {
|
private interface Api {
|
||||||
/**
|
/**
|
||||||
* 获取铭牌列表
|
* 获取铭牌列表
|
||||||
|
*
|
||||||
* @param uid
|
* @param uid
|
||||||
* @param page
|
* @param page
|
||||||
* @param pageSize
|
* @param pageSize
|
||||||
@@ -82,13 +82,19 @@ public class CollectionRoomModel extends BaseModel {
|
|||||||
*/
|
*/
|
||||||
@GET("fans/fansRoomList")
|
@GET("fans/fansRoomList")
|
||||||
Single<ServiceResult<CollectionRoomInfo>> getCollectionRoomList(@Query("uid") String uid,
|
Single<ServiceResult<CollectionRoomInfo>> getCollectionRoomList(@Query("uid") String uid,
|
||||||
@Query("page") String page,
|
@Query("roomType") int roomType,
|
||||||
@Query("pageSize") String pageSize);
|
@Query("page") String page,
|
||||||
|
@Query("pageSize") String pageSize);
|
||||||
|
|
||||||
@POST("fans/fansRoom")
|
@POST("fans/fansRoom")
|
||||||
Single<ServiceResult<String>> followRoom(@Query("uid") String uid,
|
Single<ServiceResult<String>> followRoom(@Query("uid") String uid,
|
||||||
@Query("roomUid") String roomUid,
|
@Query("roomUid") String roomUid,
|
||||||
@Query("type") String type,
|
@Query("type") String type,
|
||||||
@Query("ticket") String ticket);
|
@Query("ticket") String ticket);
|
||||||
|
|
||||||
|
@POST("fans/fansRoom")
|
||||||
|
Single<ServiceResult<String>> deleteFollowRoom(@Query("uid") String uid,
|
||||||
|
@Query("roomUids") String roomUids,
|
||||||
|
@Query("type") String type);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user