From 82e57df230ecb744af6c8865f80870ba03c86d89 Mon Sep 17 00:00:00 2001 From: Linjiajia <319408893@qq.com> Date: 星期二, 25 七月 2023 22:18:27 +0800 Subject: [PATCH] 基本功能完成 --- app/src/main/java/com/application/zhangshi_app_android/ui/function/ContactsActivity.java | 118 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 111 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/ContactsActivity.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/ContactsActivity.java index e47ded6..9d5349d 100644 --- a/app/src/main/java/com/application/zhangshi_app_android/ui/function/ContactsActivity.java +++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/ContactsActivity.java @@ -1,5 +1,6 @@ package com.application.zhangshi_app_android.ui.function; import android.graphics.drawable.ColorDrawable; +import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.widget.PopupWindow; @@ -8,6 +9,7 @@ import androidx.lifecycle.Observer; import com.android.app_base.utils.ScreenSizeUtils; +import com.android.app_base.utils.Utils; import com.android.app_base.widget.LinearItemDecoration; import com.application.zhangshi_app_android.R; @@ -31,6 +33,8 @@ public class ContactsActivity extends DLBaseActivity<ActivityContactsBinding,ContactsActivityViewModel> { private ContactsRvAdapter adapter; private PopupWindow mOperatePopupWindow; + private boolean isSearchLayoutVisible; + @Override public int getLayoutId() { return R.layout.activity_contacts; @@ -48,6 +52,14 @@ @Override public void initView() { + //涓嬫媺鍒锋柊甯冨眬 + binding.refreshLayout.setEnableRefresh(false); + binding.refreshLayout.setEnableLoadMore(true); + binding.refreshLayout.setEnableOverScrollDrag(true); + binding.refreshLayout.setOnLoadMoreListener(refreshLayout -> { + viewModel.loadMoreContacts(); + }); + //recyclerView閫傞厤鍣� adapter = new ContactsRvAdapter(this); LinearItemDecoration itemDecoration = new LinearItemDecoration(); itemDecoration.setBottomSpace((int) getResources().getDimension(com.android.app_base.R.dimen.dp_12)); @@ -55,12 +67,58 @@ itemDecoration.setFirstTop((int) getResources().getDimension(com.android.app_base.R.dimen.dp_20)); binding.recyclerView.addItemDecoration(itemDecoration); binding.recyclerView.setAdapter(adapter); - + //鍙充笂瑙掓搷浣滃脊绐� mOperatePopupWindow = initPopUpWindow(View.inflate(this,R.layout.pop_contacts_import,null)); - + mOperatePopupWindow.getContentView().findViewById(R.id.layout_contacts_import).setOnClickListener(v -> { + mOperatePopupWindow.dismiss(); + //TODO 瀵煎叆閫氳褰� + }); + //鐐瑰嚮寮瑰嚭鎿嶄綔寮圭獥 binding.ivOperate.setOnClickListener(v -> { mOperatePopupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,85) +binding.ivOperate.getWidth(),0); }); + //鐐瑰嚮鏀惧ぇ闀滄寜閽樉绀哄嚭鎼滅储妗� + binding.ivSearchDefault.setOnClickListener(v -> { + binding.layoutSearch.setVisibility(View.VISIBLE); + binding.layoutDefault.setVisibility(View.GONE); + }); + //鐐瑰嚮鎼滅储妗嗚彍鍗曚笅鎷夊嚭 鎼滅储鍙傛暟 + binding.ivSearchType.setOnClickListener(v -> { + if (!isSearchLayoutVisible){ + binding.layoutSearchParameter.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED); + int targetHeight = binding.layoutSearchParameter.getMeasuredHeight(); + Utils.dropExpand(binding.containerSearchParameter,0, targetHeight); + isSearchLayoutVisible = true; + } + }); + //鎼滅储鍙傛暟layout娣诲姞绌虹偣鍑讳簨浠讹紝闃叉鐐瑰嚮瀹冨唴閮╲iew鏃跺畠鍚庨潰鐨剅ecycler杩樿兘鍝嶅簲鐐瑰嚮浜嬩欢 + binding.layoutSearchParameter.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + } + }); + //鐐瑰嚮鎼滅储鎸夐挳杩涜鎼滅储 + binding.ivSearch.setOnClickListener(v -> { + viewModel.getContacts(); + binding.layoutSearch.setVisibility(View.GONE); + binding.layoutDefault.setVisibility(View.VISIBLE); + binding.tvTitle.setText("鎼滅储缁撴灉"); + hideSoftKeyboard(); + }); + } + + @Override + public boolean dispatchTouchEvent(MotionEvent event) { + float x = event.getX(); + float y = event.getY(); + if (isSearchLayoutVisible){ + if (!Utils.isPointInsideView(x, y, binding.layoutSearchParameter)) { + Utils.pullCollapse(binding.containerSearchParameter, binding.layoutSearchParameter.getMeasuredHeight(),0); + isSearchLayoutVisible = false; + return true; + } + } + return super.dispatchTouchEvent(event); } @Override @@ -91,13 +149,59 @@ } adapter.setData(list); }); + viewModel.getMoreListLiveData().observe(this, list -> { + //宸茬粡鏈夊悕瀛楃殑,鐩存帴娣诲姞鍒板搴旂殑鍚嶅瓧涓嬮潰 + //娌℃湁鍚嶅瓧鐨�,鏂板缓涓�涓悕瀛�,娣诲姞鍒板搴旂殑鍚嶅瓧涓嬮潰 + List<ContactsBean> data = adapter.getData(); + List<ContactsDetailBean> newData = new ArrayList<>(); + Set<String> maNames = new HashSet<>(); + for (ContactsDetailBean contactsDetailBean : list) { + boolean isAdd = false; + for (ContactsBean bean : data) { + if (contactsDetailBean.getMyName().equals(bean.getMyName())) { + bean.getContactsDetailBeans().add(contactsDetailBean); + isAdd = true; + break; + } + } + if (!isAdd) { + maNames.add(contactsDetailBean.getMyName()); + newData.add(contactsDetailBean); + } + } + for (String name : maNames) { + ContactsBean bean = new ContactsBean(); + bean.setMyName(name); + List<ContactsDetailBean> detailBeans = new ArrayList<>(); + for (ContactsDetailBean detailBean : list) { + if (name.equals(detailBean.getMyName())) { + detailBeans.add(detailBean); + } + } + bean.setContactsDetailBeans(detailBeans); + adapter.addItem(bean); + } + }); } @Override - public void onClick(View v) { - super.onClick(v); - if (v.getId() == R.id.layout_contacts_import){ - mOperatePopupWindow.dismiss(); - } + protected void dataNull() { + super.dataNull(); + binding.layoutDataNull.setVisibility(View.VISIBLE); + binding.refreshLayout.setVisibility(View.GONE); + } + + @Override + protected void dataFinish() { + super.dataFinish(); + binding.refreshLayout.finishLoadMore(); + } + + @Override + protected void hide() { + super.hide(); + binding.layoutDataNull.setVisibility(View.GONE); + binding.refreshLayout.setVisibility(View.VISIBLE); + binding.refreshLayout.finishLoadMore(); } } -- Gitblit v1.9.1