package com.application.zhangshi_app_android.ui.personal_center; import android.view.View; import androidx.lifecycle.Observer; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.android.app_base.base.adapter.BaseRVAdapter; import com.android.app_base.base.view.BaseActivity; import com.android.app_base.manager.UserManager; import com.android.app_base.utils.SPUtils; import com.application.zhangshi_app_android.BR; import com.application.zhangshi_app_android.R; import com.application.zhangshi_app_android.adapter.ElectronicFileAddAdapter; import com.application.zhangshi_app_android.databinding.ActivityLoginBgChangeBinding; import com.hjq.bar.TitleBar; import com.luck.picture.lib.entity.LocalMedia; import com.luck.picture.lib.interfaces.OnResultCallbackListener; import java.util.ArrayList; import java.util.HashSet; import java.util.Set; /** * @author Ljj * @date 2023.07.20. 16:27 * @desc 登录背景更换 Activity */ public class LoginBgChangeActivity extends BaseActivity { private ElectronicFileAddAdapter adapter; private Set loginBackgrounds; private String selectLoginBackground; @Override public int getLayoutId() { return R.layout.activity_login_bg_change; } @Override public int getVariableId() { return BR.viewModel; } @Override public void initParam() { } @Override public void initView() { adapter = new ElectronicFileAddAdapter(this); GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3); binding.rvImage.setLayoutManager(gridLayoutManager); binding.rvImage.setNestedScrollingEnabled(false); adapter.setShowSelectIcon(true); adapter.setItemAndAddClickListener(new ElectronicFileAddAdapter.OnItemAndAddClickListener() { @Override public void onItemClick(View itemView, int position) { if (selectLoginBackground != null && selectLoginBackground.equals(adapter.getItem(position))){ selectLoginBackground = null; adapter.clearSelectedItems(); }else { selectLoginBackground = adapter.getItem(position); adapter.changeSingleSelected(selectLoginBackground); } SPUtils.getInstance("loginBackground").put("selectLoginBackground",selectLoginBackground); } @Override public void onAddClick() { UserManager.getInstance().selectImage(getSelfActivity(), 1,9, new OnResultCallbackListener() { @Override public void onResult(ArrayList result) { if (result.size() == 0) return; for (LocalMedia media : result) { adapter.addItem(media.getRealPath()); loginBackgrounds.add(media.getRealPath()); SPUtils.getInstance("loginBackground").put("loginBackgrounds",loginBackgrounds); // String path = media.getRealPath(); // File file = new File(path); // if (file.exists()) { // viewModel.uploadFile(file); // } } } @Override public void onCancel() { } }); } }); adapter.setOnChildClickListener(R.id.iv_delete, new BaseRVAdapter.OnChildClickListener() { @Override public void onChildClick(RecyclerView recyclerView, View childView, int position) { if (Boolean.TRUE.equals(viewModel.getTypeLiveData().getValue())){ loginBackgrounds.remove(adapter.getItem(position)); adapter.removeItem(position); SPUtils.getInstance("loginBackground").put("loginBackgrounds",loginBackgrounds); if (!loginBackgrounds.contains(selectLoginBackground)){ selectLoginBackground = null; adapter.clearSelectedItems(); SPUtils.getInstance("loginBackground").put("selectLoginBackground",selectLoginBackground); } } } }); binding.rvImage.setAdapter(adapter); binding.ivOperate.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { viewModel.setTypeLiveData(Boolean.FALSE.equals(viewModel.getTypeLiveData().getValue())); } }); } @Override public void initData() { loginBackgrounds = SPUtils.getInstance("loginBackground").getStringSet("loginBackgrounds"); selectLoginBackground = SPUtils.getInstance("loginBackground").getString("selectLoginBackground"); if (loginBackgrounds != null && loginBackgrounds.size() > 0) { //将set转换为list for (String loginBackground : loginBackgrounds) { adapter.addItem(loginBackground); } adapter.changeSingleSelected(selectLoginBackground); }else { loginBackgrounds = new HashSet<>(); } } @Override public void initLiveDataObserve() { viewModel.getTypeLiveData().observe(this, new Observer() { @Override public void onChanged(Boolean aBoolean) { adapter.setIsEdited(aBoolean); adapter.setPreview(!aBoolean); binding.ivOperate.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { viewModel.setTypeLiveData(!aBoolean); } }); } }); } @Override public void onLeftClick(TitleBar titleBar) { finish(); } }