feat: 新增设备添加弹窗

This commit is contained in:
niushuai233
2022-10-20 17:47:41 +08:00
parent ade06068fd
commit 8b1617ce45
7 changed files with 267 additions and 12 deletions

View File

@@ -0,0 +1,117 @@
package cc.niushuai.project.devcontrol.ui.nav.device;
import android.app.Dialog;
import android.content.DialogInterface;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.DialogFragment;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import cc.niushuai.project.devcontrol.R;
import cc.niushuai.project.devcontrol.base.enums.DeviceTypeEnum;
import cc.niushuai.project.devcontrol.databinding.DeviceAddBinding;
public class DeviceAddDialogFragment extends DialogFragment {
private DeviceAddBinding binding;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
binding = DeviceAddBinding.inflate(getLayoutInflater());
this.init();
return binding.getRoot();
}
/**
* 初始化入口
*
* @author niushuai
* @date: 2022/10/20 17:00
*/
private void init() {
this.initDeviceTypeList();
}
/**
* 初始化设备列表页面
*
* @author niushuai
* @date: 2022/10/20 16:59
*/
private void initDeviceTypeList() {
GridView deviceAddGridView = binding.deviceTypeListGridView;
SimpleAdapter simpleAdapter = new SimpleAdapter(getContext(), getDeviceTypeList(), R.layout.device_type_list,
new String[]{
"device_type_list_key",
"device_type_list_icon",
"device_type_list_text"},
new int[]{
R.id.device_type_list_key,
R.id.device_type_list_icon,
R.id.device_type_list_text}
);
deviceAddGridView.setSelector(new ColorDrawable(Color.TRANSPARENT));
deviceAddGridView.setOnItemClickListener(this::deviceTypeListItemClickListener);
deviceAddGridView.setAdapter(simpleAdapter);
}
/**
* 设备列表grid item点击事件
*
* @param parent
* @param view
* @param position
* @param id
* @author niushuai
* @date: 2022/10/20 16:59
*/
private void deviceTypeListItemClickListener(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(getActivity(), "xxx", Toast.LENGTH_SHORT).show();
}
/**
* 加载初始化设备类型列表
*
* @author niushuai
* @date: 2022/10/20 16:59
* @return: {@link List<? extends Map<String,?>>}
*/
private List<? extends Map<String, ?>> getDeviceTypeList() {
DeviceTypeEnum[] allDeviceType = DeviceTypeEnum.values();
List<HashMap<String, Object>> gvData = new ArrayList<>(allDeviceType.length);
for (DeviceTypeEnum deviceType : allDeviceType) {
HashMap<String, Object> item = new HashMap<>(3);
item.put("device_type_list_key", deviceType.getValue());
item.put("device_type_list_icon", deviceType.getResId());
item.put("device_type_list_text", deviceType.getText());
gvData.add(item);
}
return gvData;
}
}

View File

@@ -25,7 +25,6 @@ import cc.niushuai.project.devcontrol.base.util.GlobalVariables;
import cc.niushuai.project.devcontrol.base.util.Keys;
import cc.niushuai.project.devcontrol.databinding.DeviceItemBinding;
import cc.niushuai.project.devcontrol.databinding.MainNavFragmentDeviceBinding;
import cc.niushuai.project.devcontrol.ui.powerswitch.PowerSwitchActivity;
import cn.hutool.core.util.RandomUtil;
/**
@@ -36,18 +35,18 @@ import cn.hutool.core.util.RandomUtil;
*/
public class NavDeviceFragment extends Fragment {
private MainNavFragmentDeviceBinding deviceBinding;
private MainNavFragmentDeviceBinding binding;
private DeviceItemBinding deviceItemBinding;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
deviceBinding = MainNavFragmentDeviceBinding.inflate(inflater, container, false);
binding = MainNavFragmentDeviceBinding.inflate(inflater, container, false);
deviceItemBinding = DeviceItemBinding.inflate(inflater, container, false);
NavDeviceViewModel navDeviceViewModel = new ViewModelProvider(this).get(NavDeviceViewModel.class);
View rootView = deviceBinding.getRoot();
View rootView = binding.getRoot();
// TextView textView = navFragmentDeviceBinding.navDeviceFragmentTextview;
//
@@ -55,13 +54,25 @@ public class NavDeviceFragment extends Fragment {
setDevices();
this.addListener();
return rootView;
}
private void addListener() {
binding.deviceAdd.setOnClickListener(this::deviceAddClickListener);
}
private void deviceAddClickListener(View view) {
DeviceAddDialogFragment dialogFragment = new DeviceAddDialogFragment();
dialogFragment.show(getActivity().getSupportFragmentManager(), DeviceAddDialogFragment.class.getName());
}
private void setDevices() {
// GridLayout deviceGridLayout = binding.deviceGridLayout;
GridView deviceGv = deviceBinding.deviceGv;
GridView deviceGv = binding.deviceGv;
deviceGv.setSelector(new ColorDrawable(Color.TRANSPARENT));
deviceGv.setOnItemClickListener(this::onItemClick);
@@ -107,10 +118,10 @@ public class NavDeviceFragment extends Fragment {
/**
* 条目点击事件
*
* @param parent 父view
* @param view 被点击的view
* @param parent 父view
* @param view 被点击的view
* @param position 当前view中的位置顺序
* @param id 组件id
* @param id 组件id
* @author niushuai
* @date: 2022/10/19 11:13
*/
@@ -125,7 +136,7 @@ public class NavDeviceFragment extends Fragment {
@Override
public void onDestroyView() {
super.onDestroyView();
deviceBinding = null;
binding = null;
deviceItemBinding = null;
}