Browse Source

fix 单选数据无法保存

lihao1 3 years ago
parent
commit
a512d806af

+ 41 - 4
demo/src/main/java/com/sybotan/android/demo/adapter/StaticInfoAdapter.java

@@ -33,12 +33,14 @@ import com.sybotan.android.demo.tools.CommonUtils;
 import com.sybotan.android.demo.view.CommonNumberControl;
 import com.sybotan.android.demo.view.ListItemView;
 import com.sybotan.android.demo.view.SelectListPopupWindow;
+import com.sybotan.android.demo.view.SelectListSinglePopupWindow;
 
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * Created by lihao.
@@ -122,18 +124,51 @@ public class StaticInfoAdapter extends BaseRecyclerViewAdapter<Infos> {
                 initEditTextTouch(mtextContent, info);
                 break;
             case "radio":
+                ListItemView radioItemView = holder.getView(R.id.view_enum);
+                radioItemView.setTvLeft(info.getLabel() + unit);
+                radioItemView.setTvRight("请选择");
+                if (!valueList.contains(info.getCode())) {
+                    if (hashMap != null && hashMap.get(info.getCode()) != null) {
+                        String value = Objects.requireNonNull(hashMap.get(info.getCode())).toString();
+                        StringBuilder sb = new StringBuilder();
+                        for (int j = 0; j < info.getOptions().size(); j++) {
+                            if (info.getOptions().get(j).getCode().equals(value)) {
+                                sb.append(info.getOptions().get(j).getName());
+                            }
+                        }
+                        radioItemView.setTvRight(sb.toString());
+                    }
+                }
+                valueList.add(info.getCode());
+
+                radioItemView.getView(R.id.tv_right).setOnClickListener(v -> {
+                    SelectListSinglePopupWindow popupWindow = new SelectListSinglePopupWindow(mContext);
+                    popupWindow.setGenList(info.getOptions(), Constant.TYPE1);
+                    popupWindow.setOnItemClickListener(new SelectListSinglePopupWindow.OnRecyclerViewItemClickListener() {
+                        @Override
+                        public void onItemClick(int position) {
+                            hashMap.put(info.getCode(), info.getOptions().get(position).getCode());
+                            radioItemView.setTvRight(info.getOptions().get(position).getName());
+                        }
+                    });
+                    popupWindow.showAtLocation(radioItemView, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0);
+                });
+                break;
             case "picker":
                 ListItemView enumItemView = holder.getView(R.id.view_enum);
                 enumItemView.setTvLeft(info.getLabel() + unit);
                 enumItemView.setTvRight("请选择");
-
                 if (!valueList.contains(info.getCode())) {
                     if (hashMap != null && hashMap.get(info.getCode()) != null) {
-                        ArrayList<Options> value = new Gson().fromJson((String) hashMap.get(info.getCode()), new TypeToken<List<Options>>() {
+                        ArrayList<String> value = new Gson().fromJson((String) hashMap.get(info.getCode()), new TypeToken<List<Options>>() {
                         }.getType());
                         StringBuilder sb = new StringBuilder();
                         for (int i = 0; i < value.size(); i++) {
-                            sb.append(value.get(i).getName()).append("、");
+                            for (int j = 0; j < info.getOptions().size(); j++) {
+                                if (info.getOptions().get(j).getCode().equals(value.get(i))) {
+                                    sb.append(info.getOptions().get(j).getName()).append("、");
+                                }
+                            }
                         }
                         enumItemView.setTvRight(sb.toString());
                     }
@@ -147,12 +182,14 @@ public class StaticInfoAdapter extends BaseRecyclerViewAdapter<Infos> {
                         @Override
                         public void onCommit(ArrayList<Integer> list) {
                             ArrayList<Options> arrayList = new ArrayList<>();
+                            ArrayList<String> codeList = new ArrayList<>();
                             StringBuilder sb = new StringBuilder();
                             for (int i = 0; i < list.size(); i++) {
                                 sb.append(info.getOptions().get(list.get(i)).getName()).append("、");
                                 arrayList.add(info.getOptions().get(list.get(i)));
+                                codeList.add(info.getOptions().get(list.get(i)).getCode());
                             }
-                            hashMap.put(info.getCode(), new Gson().toJson(arrayList));
+                            hashMap.put(info.getCode(), new Gson().toJsonTree(codeList));
                             enumItemView.setTvRight(sb.toString());
                         }
                     });

+ 1 - 1
demo/src/main/java/com/sybotan/android/demo/viewmodel/EquipDetailVM.kt

@@ -153,7 +153,7 @@ class EquipDetailVM(
                         }
                     }
                     if (!CommonUtils.IsNull(info.options)) {
-                        info.inputType = "picker"
+                        info.inputType = "radio"
                     }
 
                 }

+ 1 - 1
demo/src/main/java/com/sybotan/android/demo/viewmodel/SpaceDetailVM.kt

@@ -100,7 +100,7 @@ class SpaceDetailVM(
                         }
                     }
                     if (!CommonUtils.IsNull(info.options)) {
-                        info.inputType = "picker"
+                        info.inputType = "radio"
                     }
 
                 }