Linjiajia
2023-05-15 a0dc6be52293a64ebfe38b8c2391dc7d2ffe63ae
app/src/main/java/com/application/zhangshi_app_android/ui/function/ContactsActivity.java
@@ -5,15 +5,23 @@
import android.widget.PopupWindow;
import androidx.databinding.library.baseAdapters.BR;
import androidx.lifecycle.Observer;
import com.android.app_base.utils.ScreenSizeUtils;
import com.android.app_base.widget.LinearItemDecoration;
import com.application.zhangshi_app_android.R;
import com.application.zhangshi_app_android.adapter.ContactsRvAdapter;
import com.application.zhangshi_app_android.bean.ContactsBean;
import com.application.zhangshi_app_android.bean.ContactsDetailBean;
import com.application.zhangshi_app_android.databinding.ActivityContactsBinding;
;
import com.application.zhangshi_app_android.ui.DLBaseActivity;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
 * @author Gss
@@ -48,9 +56,7 @@
        binding.recyclerView.addItemDecoration(itemDecoration);
        binding.recyclerView.setAdapter(adapter);
        mOperatePopupWindow = initPopUpWindow(View.inflate(this,R.layout.pop_operate,null));
        mOperatePopupWindow.getContentView().findViewById(R.id.layout_add).setVisibility(View.GONE);
        mOperatePopupWindow.getContentView().findViewById(R.id.layout_select).setVisibility(View.GONE);
        mOperatePopupWindow = initPopUpWindow(View.inflate(this,R.layout.pop_contacts_import,null));
        binding.ivOperate.setOnClickListener(v -> {
            mOperatePopupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,85) +binding.ivOperate.getWidth(),0);
@@ -59,33 +65,39 @@
    @Override
    public void initData() {
//        viewModel.getFamilyContacts();
        viewModel.getContacts();
    }
    @Override
    public void initLiveDataObserve() {
//        viewModel.getDataListLiveData().observe(this, familyContactsBeans -> {
//            adapter.setData(familyContactsBeans);
//        });
        viewModel.getDataListLiveData().observe(this, contactsDetailBeans -> {
            //根据名字分组
            Set<String> maNames = new HashSet<>();
            for (ContactsDetailBean bean : contactsDetailBeans) {
                maNames.add(bean.getMyName());
            }
            List<ContactsBean> list = new ArrayList<>();
            for (String name : maNames) {
                ContactsBean bean = new ContactsBean();
                bean.setMyName(name);
                List<ContactsDetailBean> detailBeans = new ArrayList<>();
                for (ContactsDetailBean detailBean : contactsDetailBeans) {
                    if (name.equals(detailBean.getMyName())) {
                        detailBeans.add(detailBean);
                    }
                }
                bean.setContactsDetailBeans(detailBeans);
                list.add(bean);
            }
            adapter.setData(list);
        });
    }
    public PopupWindow initPopUpWindow(View view){
        PopupWindow popupWindow = new PopupWindow(this);
        // 设置布局文件
        popupWindow.setContentView(view);
        // 为了避免部分机型不显示,需要重新设置一下宽高
        popupWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
        popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
        // 设置pop透明效果
        popupWindow.setBackgroundDrawable(new ColorDrawable(0x0000));
        // 设置pop出入动画
        popupWindow.setAnimationStyle(com.android.app_base.R.style.pop_operate);
        // 设置pop获取焦点,如果为false点击返回按钮会退出当前Activity,如果pop中有Editor的话,focusable必须要为true
        popupWindow.setFocusable(true);
        // 设置pop可点击,为false点击事件无效,默认为true
        popupWindow.setTouchable(true);
        // 设置点击pop外侧消失,默认为false;在focusable为true时点击外侧始终消失
        popupWindow.setOutsideTouchable(false);
        return popupWindow;
    @Override
    public void onClick(View v) {
        super.onClick(v);
        if (v.getId() == R.id.layout_contacts_import){
            mOperatePopupWindow.dismiss();
        }
    }
}