搜索成员优化,增加分页加载

This commit is contained in:
huangjian
2020-11-20 20:36:59 +08:00
parent b8d4388bc8
commit a569a25978
5 changed files with 59 additions and 80 deletions

View File

@@ -96,11 +96,9 @@ public class HallMemberListActivity extends BaseActivity {
@SuppressLint("CheckResult")
private void loadData(boolean refresh) {
if (refresh) {
page = 1;
} else {
page++;
}
page = refresh ? 1 : (page + 1);
HallModel.get().getAllMembers(hallId, page, pageSize)
.compose(bindToLifecycle())
.doOnError(e -> rvDelegate.loadErr(refresh))

View File

@@ -1,25 +1,30 @@
package com.yizhuan.erban.module_hall.hall.activity;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import com.chad.library.adapter.base.BaseQuickAdapter;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.yizhuan.erban.R;
import com.yizhuan.erban.UIHelper;
import com.yizhuan.erban.base.BaseMvpActivity;
import com.yizhuan.erban.base.BaseActivity;
import com.yizhuan.erban.common.EmptyViewHelper;
import com.yizhuan.erban.module_hall.hall.adapter.GroupMemberListAdapter;
import com.yizhuan.erban.module_hall.hall.presenter.MemberSearchPresenter;
import com.yizhuan.erban.module_hall.hall.view.IMemberSearchView;
import com.yizhuan.erban.ui.utils.RVDelegate;
import com.yizhuan.xchat_android_core.module_hall.hall.HallModel;
import com.yizhuan.xchat_android_core.module_hall.hall.bean.ListMemberInfo;
import com.yizhuan.xchat_android_core.module_hall.hall.bean.MemberInfo;
import com.yizhuan.xchat_android_core.utils.net.BeanObserver;
import com.yizhuan.xchat_android_library.base.factory.CreatePresenter;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.List;
@@ -27,9 +32,7 @@ import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
@CreatePresenter(MemberSearchPresenter.class)
public class MemberSearchActivity extends BaseMvpActivity<IMemberSearchView, MemberSearchPresenter>
implements IMemberSearchView{
public class MemberSearchActivity extends BaseActivity {
@BindView(R.id.recycler_view)
RecyclerView recyclerView;
@@ -39,6 +42,13 @@ public class MemberSearchActivity extends BaseMvpActivity<IMemberSearchView, Mem
private GroupMemberListAdapter mGroupMemberListAdapter;
private List<MemberInfo> mMemberInfoList = new ArrayList<>();
private RVDelegate<MemberInfo> rvDelegate;
private String queryString;
private int page = 1;
private final int pageSize = 20;
public static void start(Context context) {
Intent intent = new Intent(context, MemberSearchActivity.class);
context.startActivity(intent);
@@ -50,30 +60,34 @@ public class MemberSearchActivity extends BaseMvpActivity<IMemberSearchView, Mem
setContentView(R.layout.activity_add_member);
ButterKnife.bind(this);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
mGroupMemberListAdapter = new GroupMemberListAdapter(this, null);
rvDelegate = new RVDelegate.Builder<MemberInfo>()
.setAdapter(mGroupMemberListAdapter)
.setLayoutManager(new LinearLayoutManager(this))
.setPageSize(pageSize)
.setEmptyView(EmptyViewHelper.createEmptyView(context, "没有搜到相关消息"))
.setRecyclerView(recyclerView)
.build();
mGroupMemberListAdapter.setmType(GroupMemberListAdapter.TYPE_SEARCH);
mGroupMemberListAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() {
@Override
public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) {
if (mMemberInfoList != null && mMemberInfoList.size() > 0) {
MemberInfo memberInfo = mMemberInfoList.get(position);
UIHelper.showUserInfoAct(MemberSearchActivity.this, memberInfo.getUid());
}
mGroupMemberListAdapter.setOnItemChildClickListener((adapter, view, position) -> {
if (mMemberInfoList != null && mMemberInfoList.size() > 0) {
MemberInfo memberInfo = mMemberInfoList.get(position);
UIHelper.showUserInfoAct(MemberSearchActivity.this, memberInfo.getUid());
}
});
recyclerView.setAdapter(mGroupMemberListAdapter);
mGroupMemberListAdapter.setOnLoadMoreListener(() -> loadData(queryString, false), recyclerView);
}
@OnClick({R.id.tv_search,R.id.iv_back})
@OnClick({R.id.tv_search, R.id.iv_back})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.tv_search:
String key = etSearch.getText().toString().trim();
if (!TextUtils.isEmpty(key))
getMvpPresenter().queryMembers(key);
queryString = etSearch.getText().toString().trim();
if (!TextUtils.isEmpty(queryString))
loadData(queryString, true);
break;
case R.id.iv_back:
finish();
@@ -81,19 +95,16 @@ public class MemberSearchActivity extends BaseMvpActivity<IMemberSearchView, Mem
}
}
@Override
public void queryMembersSuccess(List<MemberInfo> memberInfoList) {
hideStatus();
mMemberInfoList = memberInfoList;
mGroupMemberListAdapter.setNewData(mMemberInfoList);
mGroupMemberListAdapter.notifyDataSetChanged();
@SuppressLint("CheckResult")
private void loadData(String queryString, boolean refresh) {
page = refresh ? 1 : (page + 1);
HallModel.get().queryMembers(queryString, page, pageSize)
.compose(bindToLifecycle())
.compose(bindToLifecycle())
.doOnError(e -> rvDelegate.loadErr(refresh))
.subscribe(listMemberInfo -> {
rvDelegate.loadData(listMemberInfo.getMembers(), refresh);
});
}
@Override
public void queryMembersFail(String message) {
hideStatus();
showNoData(R.drawable.icon_common_failure, getString(R.string.dearch_no_data));
mGroupMemberListAdapter.setNewData(null);
mGroupMemberListAdapter.notifyDataSetChanged();
}
}

View File

@@ -1,33 +0,0 @@
package com.yizhuan.erban.module_hall.hall.presenter;
import com.yizhuan.erban.base.BaseMvpPresenter;
import com.yizhuan.erban.module_hall.HallDataManager;
import com.yizhuan.erban.module_hall.hall.view.IMemberSearchView;
import com.yizhuan.xchat_android_core.module_hall.hall.HallModel;
import com.yizhuan.xchat_android_core.module_hall.hall.bean.ListMemberInfo;
import com.yizhuan.xchat_android_core.utils.net.BeanObserver;
import com.yizhuan.xchat_android_library.utils.ListUtils;
public class MemberSearchPresenter extends BaseMvpPresenter<IMemberSearchView> {
public void queryMembers(String key) {
HallModel.get().queryMembers(HallDataManager.get().getHallId(), key)
.compose(bindToLifecycle())
.subscribe(new BeanObserver<ListMemberInfo>() {
@Override
public void onErrorMsg(String error) {
if (getMvpView() == null)
return;
getMvpView().queryMembersFail(error);
}
@Override
public void onSuccess(ListMemberInfo listMemberInfo) {
if (!ListUtils.isListEmpty(listMemberInfo.getMembers())) {
getMvpView().queryMembersSuccess(listMemberInfo.getMembers());
} else
getMvpView().queryMembersFail("no data");
}
});
}
}

View File

@@ -166,8 +166,8 @@ public class HallModel extends BaseModel implements IHallModel {
}
@Override
public Single<ListMemberInfo> queryMembers(long hallId, String key) {
return api.queryMembers(hallId, key)
public Single<ListMemberInfo> queryMembers(String queryString,int page,int pageSize) {
return api.queryMembers(AuthModel.get().getCurrentUid(), queryString,page,pageSize)
.compose(RxHelper.handleCommon(ListMemberInfo::new));
}
@@ -346,8 +346,11 @@ public class HallModel extends BaseModel implements IHallModel {
/** 按条件搜索成员 */
@GET("/hall/queryMembers")
Single<ServiceResult<ListMemberInfo>> queryMembers(@Query("hallId") long hallId, @Query("key") String key);
@GET("/clan/listMember")
Single<ServiceResult<ListMemberInfo>> queryMembers(@Query("uid") long uid,
@Query("queryStr") String queryString,
@Query("page") int page,
@Query("pageSize") int pageSize);
/** 添加高管 */
@POST("/hall/setManager")

View File

@@ -52,7 +52,7 @@ public interface IHallModel {
Single<HallInfo> getHallInfo(long uid, long hallId);
Single<ListMemberInfo> queryMembers(long hallId, String key);
Single<ListMemberInfo> queryMembers(String queryString,int page,int pageSize);
Single<String> setManager(long targetUid, long hallId);
Single<String> removeManager(long targetUid, long hallId);