完成能力测试的提交功能

This commit is contained in:
md 2021-05-31 18:53:12 +08:00
parent a970c02393
commit 90d1237a22
24 changed files with 650 additions and 261 deletions

2
.idea/misc.xml generated
View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK"> <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="JDK" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" /> <output url="file://$PROJECT_DIR$/build/classes" />
</component> </component>
<component name="ProjectType"> <component name="ProjectType">

View File

@ -3,6 +3,7 @@ apply plugin: 'com.android.application'
android { android {
compileSdkVersion 30 compileSdkVersion 30
buildToolsVersion "30.0.3" buildToolsVersion "30.0.3"
ndkVersion '23.0.7123448'
defaultConfig { defaultConfig {
applicationId "com.example.myapplication" applicationId "com.example.myapplication"

View File

@ -56,6 +56,7 @@ public class LoginActivity extends BaseActivity implements View.OnClickListener
startActivity(forgetPaw); startActivity(forgetPaw);
break; break;
case R.id.tv_login: case R.id.tv_login:
Intent intent = new Intent(this, HomeActivity.class); Intent intent = new Intent(this, HomeActivity.class);
startActivity(intent); startActivity(intent);
break; break;

View File

@ -1,12 +1,18 @@
package com.example.myapplication.adapter; package com.example.myapplication.adapter;
import android.content.Context; import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RadioButton; import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
@ -14,36 +20,127 @@ import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import com.example.myapplication.R; import com.example.myapplication.R;
import com.example.myapplication.bean.BolBean; import com.example.myapplication.bean.BolBean;
import com.example.myapplication.bean.MeasureBean;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map;
public class CapacityMeasureAdapter extends RecyclerView.Adapter { public class CapacityMeasureAdapter extends RecyclerView.Adapter<CapacityMeasureAdapter.ViewHolder> {
private List<BolBean> measureList = new ArrayList<>(); private List<BolBean> measureList = new ArrayList<>();
private Context context; private Context context;
private Map<String, String> checkedMap;
public Map<String, String> getCheckedMap() {
return checkedMap;
}
public CapacityMeasureAdapter(Context context) { public CapacityMeasureAdapter(Context context) {
this.context = context; this.context = context;
this.checkedMap = new LinkedHashMap<>();
} }
public void setMeasureList(List<BolBean> measureList) { public void setMeasureList(List<BolBean> measureList) {
this.measureList.addAll(measureList); this.measureList.addAll(measureList);
notifyDataSetChanged();
} }
@NonNull @NonNull
@Override @Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
final View inflate = LayoutInflater.from(context).inflate(R.layout.measure_item, parent, false); final View inflate = LayoutInflater.from(context).inflate(R.layout.measure_item, parent, false);
return new ViewHolder(inflate); return new ViewHolder(inflate);
} }
@Override @Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
ViewHolder holder1 = (ViewHolder) holder; final boolean single = measureList.get(position).isSingle();//是否多选
holder1.tvMeasure.setText((position+1)+measureList.get(position).getQuestion()); holder.tvMeasure.setText((position + 1) + measureList.get(position).getQuestion());
if (single) {
RadioGroup radioGroup = new RadioGroup(context);
radioGroup.setOrientation(LinearLayout.VERTICAL);
holder.llOption.addView(radioGroup);
List<?> optionList = measureList.get(position).getOption();
if (optionList != null && !optionList.isEmpty()) {
for (int i = 0; i < optionList.size(); i++) {
obtainOptionLayout(radioGroup, i, (String) optionList.get(i), true,measureList.get(position).getId());
}
}
} else {
List<?> optionList = measureList.get(position).getOption();
if (optionList != null && !optionList.isEmpty()) {
for (int i = 0; i < optionList.size(); i++) {
obtainOptionLayout(holder.llOption, i, (String) optionList.get(i), false, measureList.get(position).getId());
}
}
}
}
private void obtainOptionLayout(ViewGroup parentLayout, int optionIndex, String option, boolean isSingle, String questionId) {
LinearLayout optionLayer = (LinearLayout) LayoutInflater.from(context).inflate(R.layout.capacity_measure_option, null);
parentLayout.addView(optionLayer);
RadioButton tvOptionIndex = optionLayer.findViewById(R.id.tv_option_layer_index);
CheckBox cbOptionIndex = optionLayer.findViewById(R.id.cb_option_layer_index);
if (isSingle) {//单选
tvOptionIndex.setVisibility(View.VISIBLE);
cbOptionIndex.setVisibility(View.GONE);
tvOptionIndex.setText(getOptionIndex(optionIndex));
} else {
tvOptionIndex.setVisibility(View.GONE);
cbOptionIndex.setVisibility(View.VISIBLE);
cbOptionIndex.setText(getOptionIndex(optionIndex));
}
tvOptionIndex.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
checkedChangeRadioButton(parentLayout, buttonView);
Toast.makeText(context, "option" + option, Toast.LENGTH_SHORT).show();
updateCheckedMap(questionId, buttonView, parentLayout);
}
}
});
cbOptionIndex.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
updateCheckedMap(questionId, buttonView, parentLayout);
}
});
ImageView ivOption = optionLayer.findViewById(R.id.iv_option_img);
TextView tvOptionContent = optionLayer.findViewById(R.id.tv_option_content);
if (option != null) {
if (option.startsWith("http")) {
Glide.with(context).load(option).into(ivOption);
} else {
tvOptionContent.setText(option);
}
}
}
private void checkedChangeRadioButton(ViewGroup group, CompoundButton currentButton) {
if (group != null && group.getChildCount() > 0) {
for (int i = 0; i < group.getChildCount(); i++) {
if (group.getChildAt(i) instanceof ViewGroup) {
checkedChangeRadioButton((ViewGroup) group.getChildAt(i), currentButton);
} else if (group.getChildAt(i) instanceof CompoundButton && group.getChildAt(i).isShown() && group.getChildAt(i) != currentButton) {
((CompoundButton) group.getChildAt(i)).setChecked(false);
}
}
}
}
//indext内容
private String getOptionIndex(int index) {
char A = (char) (65 + index);
return "选项" + A + ":";
// Glide.with(context).load(measureList.get(position).getSingleChoice().get(0).getOption());
} }
@Override @Override
@ -53,28 +150,55 @@ public class CapacityMeasureAdapter extends RecyclerView.Adapter {
class ViewHolder extends RecyclerView.ViewHolder { class ViewHolder extends RecyclerView.ViewHolder {
TextView tvMeasure; TextView tvMeasure;
TextView tvMeasure2; LinearLayout llOption;
RadioButton tvMeasureA;
RadioButton tvMeasureB;
RadioButton tvMeasureC;
RadioButton tvMeasureD;
ImageView ivMeasureA;
ImageView ivMeasureB;
ImageView ivMeasureC;
ImageView ivMeasureD;
public ViewHolder(@NonNull View itemView) { public ViewHolder(@NonNull View itemView) {
super(itemView); super(itemView);
llOption = itemView.findViewById(R.id.ll_option);
tvMeasure = itemView.findViewById(R.id.tv_measure_text1); tvMeasure = itemView.findViewById(R.id.tv_measure_text1);
tvMeasure2 = itemView.findViewById(R.id.tv_measure_text2);
tvMeasureA = itemView.findViewById(R.id.rb_tv_measureA); }
tvMeasureB = itemView.findViewById(R.id.rb_tv_measureB); }
tvMeasureC = itemView.findViewById(R.id.rb_tv_measureC);
tvMeasureD = itemView.findViewById(R.id.rb_tv_measureD); /**
ivMeasureA = itemView.findViewById(R.id.iv_measureA); * 获取被勾选的数据
ivMeasureB = itemView.findViewById(R.id.iv_measureB); */
ivMeasureC = itemView.findViewById(R.id.iv_measureC); private void updateCheckedMap(String questionId, CompoundButton currentButton, ViewGroup group) {
ivMeasureD = itemView.findViewById(R.id.iv_measureD); StringBuilder resultStr = null;
if (group != null) {
resultStr = new StringBuilder("");
List<CompoundButton> resultList = new ArrayList<>();
getCompoundButton(group, resultList);
if (resultList != null && !resultList.isEmpty()) {
for (int i = 0; i < resultList.size(); i++) {
if (((CompoundButton) resultList.get(i)).isChecked()) {
resultStr.append(i).append(",");
}
}
}
}
if (resultStr != null) {
String result = "";
if (resultStr.toString().length() > 0) {
result = resultStr.substring(0, resultStr.length() - 1);
}
checkedMap.put(questionId, result);
Log.d("checked", result);
}
}
/**
* 获取该viewGroup的所有子CompoundButton
*/
private void getCompoundButton(ViewGroup group, List<CompoundButton> compoundButtonList) {
if (group != null) {
for (int i = 0; i < group.getChildCount(); i++) {
if (group.getChildAt(i) instanceof ViewGroup) {
getCompoundButton((ViewGroup) group.getChildAt(i), compoundButtonList);
} else if (group.getChildAt(i) instanceof CompoundButton && group.getChildAt(i).isShown()) {
compoundButtonList.add((CompoundButton) group.getChildAt(i));
}
}
} }
} }
} }

View File

@ -3,31 +3,31 @@ package com.example.myapplication.bean;
import java.util.List; import java.util.List;
public class BolBean { public class BolBean {
private long id; private String id;
private String question; private String question;
private List<?> option; private List<?> option;
private boolean isM;//是否多选 private boolean isSingle;//是否多选
public BolBean(long id, String question, List<?> option, boolean isM) { public BolBean(String id, String question, List<?> option, boolean isM) {
this.id = id; this.id = id;
this.question = question; this.question = question;
this.option = option; this.option = option;
this.isM = isM; this.isSingle = isM;
} }
public boolean isM() { public boolean isSingle() {
return isM; return isSingle;
} }
public void setM(boolean m) { public void setM(boolean m) {
isM = m; isSingle = m;
} }
public long getId() { public String getId() {
return id; return id;
} }
public void setId(long id) { public void setId(String id) {
this.id = id; this.id = id;
} }

View File

@ -0,0 +1,27 @@
package com.example.myapplication.bean;
public class ExamBean {
private String id;
private String answer;
public ExamBean(String id, String answer) {
this.id = id;
this.answer = answer;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getAnswer() {
return answer;
}
public void setAnswer(String answer) {
this.answer = answer;
}
}

View File

@ -0,0 +1,62 @@
package com.example.myapplication.bean;
public class ExamSubmitBean {
/**
* status :
* msg :
* body : {"grade":"0为不通过 1为通过 只有0和1"}
*/
private String status;
private String msg;
private BodyBean body;
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public BodyBean getBody() {
return body;
}
public void setBody(BodyBean body) {
this.body = body;
}
public static class BodyBean {
/**
* grade : 0为不通过 1为通过 只有0和1
*/
private String grade;
public String getGrade() {
return grade;
}
public void setGrade(String grade) {
this.grade = grade;
}
}
@Override
public String toString() {
return "ExamSubmitBean{" +
"status='" + status + '\'' +
", msg='" + msg + '\'' +
", body=" + body +
'}';
}
}

View File

@ -80,15 +80,15 @@ public class MeasureBean {
* option : [] * option : []
*/ */
private long id; private String id;
private String question; private String question;
private List<?> option; private List<?> option;
public long getId() { public String getId() {
return id; return id;
} }
public void setId(long id) { public void setId(String id) {
this.id = id; this.id = id;
} }
@ -107,6 +107,15 @@ public class MeasureBean {
public void setOption(List<?> option) { public void setOption(List<?> option) {
this.option = option; this.option = option;
} }
@Override
public String toString() {
return "SingleChoiceBean{" +
"id=" + id +
", question='" + question + '\'' +
", option=" + option +
'}';
}
} }
public static class MultiChoiceBean { public static class MultiChoiceBean {
@ -116,15 +125,15 @@ public class MeasureBean {
* option : [] * option : []
*/ */
private long id; private String id;
private String question; private String question;
private List<?> option; private List<?> option;
public long getId() { public String getId() {
return id; return id;
} }
public void setId(long id) { public void setId(String id) {
this.id = id; this.id = id;
} }
@ -143,7 +152,33 @@ public class MeasureBean {
public void setOption(List<?> option) { public void setOption(List<?> option) {
this.option = option; this.option = option;
} }
@Override
public String toString() {
return "MultiChoiceBean{" +
"id=" + id +
", question='" + question + '\'' +
", option=" + option +
'}';
}
}
@Override
public String toString() {
return "BodyBean{" +
"title='" + title + '\'' +
", singleChoice=" + singleChoice +
", multiChoice=" + multiChoice +
'}';
} }
} }
@Override
public String toString() {
return "MeasureBean{" +
"status=" + status +
", msg='" + msg + '\'' +
", body=" + body +
'}';
}
} }

View File

@ -16,6 +16,8 @@ import com.example.myapplication.adapter.CapacityMeasureAdapter;
import com.example.myapplication.base.BaseFragment; import com.example.myapplication.base.BaseFragment;
import com.example.myapplication.bean.BolBean; import com.example.myapplication.bean.BolBean;
import com.example.myapplication.bean.CapacityMeasureBean; import com.example.myapplication.bean.CapacityMeasureBean;
import com.example.myapplication.bean.ExamBean;
import com.example.myapplication.bean.ExamSubmitBean;
import com.example.myapplication.bean.MeasureBean; import com.example.myapplication.bean.MeasureBean;
import com.example.myapplication.http.Callback; import com.example.myapplication.http.Callback;
import com.example.myapplication.http.HttpInterface; import com.example.myapplication.http.HttpInterface;
@ -24,10 +26,13 @@ import com.kongzue.dialog.interfaces.OnDialogButtonClickListener;
import com.kongzue.dialog.util.BaseDialog; import com.kongzue.dialog.util.BaseDialog;
import com.kongzue.dialog.v3.MessageDialog; import com.kongzue.dialog.v3.MessageDialog;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 发现-能力测评条目点击进入测试页面 * 发现-能力测评条目点击进入测试页面
@ -38,6 +43,7 @@ public class CapacityMeasurementFragment extends BaseFragment implements View.On
private CapacityMeasureAdapter capacityMeasureAdapter; private CapacityMeasureAdapter capacityMeasureAdapter;
private ArrayList<BolBean> bolbean; private ArrayList<BolBean> bolbean;
private Button btn; private Button btn;
private ArrayList<ExamBean> examBeans;
@Override @Override
protected int getLayout() { protected int getLayout() {
@ -48,13 +54,14 @@ public class CapacityMeasurementFragment extends BaseFragment implements View.On
protected void initView() { protected void initView() {
super.initView(); super.initView();
ivMeasurementFinish = (ImageView) findViewById(R.id.iv_measurement_finish); ivMeasurementFinish = (ImageView) findViewById(R.id.iv_measurement_finish);
btn = findViewById(R.id.btn);
btn.setOnClickListener(this::onClick);
capacityMeasurementRel = (RecyclerView) findViewById(R.id.capacity_measurementRel); capacityMeasurementRel = (RecyclerView) findViewById(R.id.capacity_measurementRel);
ivMeasurementFinish.setOnClickListener(this::onClick); ivMeasurementFinish.setOnClickListener(this::onClick);
capacityMeasurementRel.setLayoutManager(new LinearLayoutManager(getActivity())); capacityMeasurementRel.setLayoutManager(new LinearLayoutManager(getActivity()));
capacityMeasureAdapter = new CapacityMeasureAdapter(getActivity()); capacityMeasureAdapter = new CapacityMeasureAdapter(getActivity());
capacityMeasurementRel.setAdapter(capacityMeasureAdapter); capacityMeasurementRel.setAdapter(capacityMeasureAdapter);
btn = findViewById(R.id.btn);
btn.setOnClickListener(this::onClick);
} }
@ -62,6 +69,7 @@ public class CapacityMeasurementFragment extends BaseFragment implements View.On
protected void initData() { protected void initData() {
super.initData(); super.initData();
bolbean = new ArrayList<>(); bolbean = new ArrayList<>();
examBeans = new ArrayList<>();
initNetWorks(true); initNetWorks(true);
} }
@ -69,7 +77,7 @@ public class CapacityMeasurementFragment extends BaseFragment implements View.On
private void initNetWorks(boolean b) { private void initNetWorks(boolean b) {
OkGoBuilder.getInstance() OkGoBuilder.getInstance()
.Builder(getActivity()) .Builder(getActivity())
.url(HttpInterface.MSG_LISt) .url(HttpInterface.EXAM_CONTENT)
.method(OkGoBuilder.GET) .method(OkGoBuilder.GET)
.cls(MeasureBean.class) .cls(MeasureBean.class)
.json(new JSONObject()) .json(new JSONObject())
@ -78,9 +86,9 @@ public class CapacityMeasurementFragment extends BaseFragment implements View.On
public void onSuccess(MeasureBean response, int id) { public void onSuccess(MeasureBean response, int id) {
dismissLoadingDialog(); dismissLoadingDialog();
//单选 //单选
final List<MeasureBean.BodyBean.MultiChoiceBean> multiChoice = response.getBody().getMultiChoice(); List<MeasureBean.BodyBean.MultiChoiceBean> multiChoice = response.getBody().getMultiChoice();
//多选 //多选
final List<MeasureBean.BodyBean.SingleChoiceBean> singleChoice1 = response.getBody().getSingleChoice(); List<MeasureBean.BodyBean.SingleChoiceBean> singleChoice1 = response.getBody().getSingleChoice();
if (multiChoice != null) { if (multiChoice != null) {
for (int i = 0; i < multiChoice.size(); i++) { for (int i = 0; i < multiChoice.size(); i++) {
bolbean.add(new BolBean(multiChoice.get(i).getId(), multiChoice.get(i).getQuestion(), multiChoice.get(i).getOption(), true)); bolbean.add(new BolBean(multiChoice.get(i).getId(), multiChoice.get(i).getQuestion(), multiChoice.get(i).getOption(), true));
@ -96,8 +104,8 @@ public class CapacityMeasurementFragment extends BaseFragment implements View.On
capacityMeasureAdapter.setMeasureList(bolbean); capacityMeasureAdapter.setMeasureList(bolbean);
} }
Log.d("TAG", "onSuccess: " + response.toString()+ "sssssssssssss"); Log.d("TAG", "onSuccess: " + response.toString() + "sssssssssssss");
//Toast.makeText(getActivity(), response.getMsg() + "", Toast.LENGTH_SHORT).show();
} }
@Override @Override
@ -116,14 +124,77 @@ public class CapacityMeasurementFragment extends BaseFragment implements View.On
getActivity().finish(); getActivity().finish();
break; break;
case R.id.btn: case R.id.btn:
MessageDialog.show((AppCompatActivity) getActivity(),"提示","通过","确定","取消").setOkButton(new OnDialogButtonClickListener() { try {
@Override if (bolbean!=null){
public boolean onClick(BaseDialog baseDialog, View v) { Map<String , String> checkedMap = capacityMeasureAdapter.getCheckedMap();
// Toast.makeText(getContext(), "点击了确定", Toast.LENGTH_SHORT).show(); for (int i = 0; i < bolbean.size(); i++) {
return false; final String id = bolbean.get(i).getId();
if (!checkedMap.containsKey(id)||checkedMap.get(id)==null||("").equals(checkedMap.get(id))){
Toast.makeText(getContext(), "有题目未填写答案,请仔细检查!", Toast.LENGTH_SHORT).show();
return;
}
}
for(Map.Entry<String , String> entry : checkedMap.entrySet()) {
examBeans.add(new ExamBean(entry.getKey(),entry.getValue()));
}
initExamSubmit();
} }
}); } catch (JSONException e) {
e.printStackTrace();
}
break; break;
} }
} }
private void initExamSubmit() throws JSONException {
JSONArray jsonArray = new JSONArray();
for (int i = 0; i < examBeans.size(); i++) {
JSONObject json = new JSONObject();
json.put("id", examBeans.get(i).getId());
json.put("answer", examBeans.get(i).getAnswer());
jsonArray.put(json);
}
examBeans.clear();
Log.d("TAG", "initExamSubmit: " + jsonArray.toString());
OkGoBuilder.getInstance()
.Builder(getActivity())
.url(HttpInterface.EXAM_SUBMIT)
.method(OkGoBuilder.POST)
.cls(ExamSubmitBean.class)
.jsonArray(jsonArray)
.callback(new Callback<ExamSubmitBean>() {
@Override
public void onSuccess(ExamSubmitBean response, int id) {
dismissLoadingDialog();
Log.d("TAG", "onSuccess: " + response.toString()+ "sssssssssssss");
if (response.getBody().getGrade().equals("0")){
MessageDialog.show((AppCompatActivity) getActivity(),"提示","不通过","确定","取消").setOkButton(new OnDialogButtonClickListener() {
@Override
public boolean onClick(BaseDialog baseDialog, View v) {
// Toast.makeText(getContext(), "点击了确定", Toast.LENGTH_SHORT).show();
return false;
}
});
}else {
MessageDialog.show((AppCompatActivity) getActivity(),"提示","通过","确定","取消").setOkButton(new OnDialogButtonClickListener() {
@Override
public boolean onClick(BaseDialog baseDialog, View v) {
// Toast.makeText(getContext(), "点击了确定", Toast.LENGTH_SHORT).show();
return false;
}
});
}
//Toast.makeText(getActivity(), response.getMsg() + "", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(Throwable e, int id) {
dismissLoadingDialog();
Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_SHORT).show();
Log.d("TAG", "onError: " + e.getMessage());
}
}).build();
}
} }

View File

@ -74,7 +74,7 @@ public class TaskExplainFragment extends BaseFragment implements View.OnClickLis
Intent itemIntent = new Intent(getActivity(), FragmentManagement.class); Intent itemIntent = new Intent(getActivity(), FragmentManagement.class);
itemIntent.putExtra("tag", 10); itemIntent.putExtra("tag", 10);
startActivity(itemIntent); startActivity(itemIntent);
//Toast.makeText(getContext(), "你猜"+pos, Toast.LENGTH_SHORT).show();
} }
}); });
} }
@ -105,7 +105,7 @@ public class TaskExplainFragment extends BaseFragment implements View.OnClickLis
@Override @Override
public void onError(Throwable e, int id) { public void onError(Throwable e, int id) {
dismissLoadingDialog(); dismissLoadingDialog();
Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_SHORT).show(); // Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_SHORT).show();
Log.d("TAG", "onError: " + e.getMessage()); Log.d("TAG", "onError: " + e.getMessage());
} }
}).build(); }).build();

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/shape_red_radius_bg" android:state_enabled="true"/>
<item android:drawable="@drawable/shape_transparent_pink_radius_bg" android:state_enabled="false"/>
</selector>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/shape_red_radius_bg" android:state_selected="true" />
<item android:drawable="@drawable/shape_transparent_pink_radius_bg" android:state_selected="false" />
</selector>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/colorPrimaryBlue" />
<corners android:radius="40dp" />
</shape>

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:visible="true">
<corners android:radius="40dp" />
<solid android:color="@color/white" />
</shape>

View File

@ -120,7 +120,7 @@
android:layout_width="300dp" android:layout_width="300dp"
android:layout_height="50dp" android:layout_height="50dp"
android:layout_marginTop="20dp" android:layout_marginTop="20dp"
android:background="@drawable/shape_login" android:background="@drawable/selector_change_color_btn_bg"
android:gravity="center" android:gravity="center"
android:text="登录" android:text="登录"
android:textColor="@color/colorPrimaryDark" android:textColor="@color/colorPrimaryDark"

View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RadioButton
android:id="@+id/tv_option_layer_index"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<CheckBox
android:id="@+id/cb_option_layer_index"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone" />
<TextView
android:id="@+id/tv_option_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<ImageView
android:id="@+id/iv_option_img"
android:layout_width="200dp"
android:layout_height="100dp"
android:src="@mipmap/top_bg" />
</LinearLayout>

View File

@ -25,35 +25,39 @@
android:src="@drawable/ic_baseline_arrow" /> android:src="@drawable/ic_baseline_arrow" />
</LinearLayout> </LinearLayout>
<TextView
android:id="@+id/tv_capacity_measurement"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="POI任务测试"
android:textColor="@color/colorGray"
android:textSize="30sp"
app:layout_constraintLeft_toLeftOf="@id/rl_capacity_measurement"
app:layout_constraintRight_toRightOf="@id/rl_capacity_measurement"
app:layout_constraintTop_toBottomOf="@+id/rl_capacity_measurement" />
<Button
android:id="@+id/btn"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:background="@drawable/shape_login"
android:text="提交"
android:layout_marginBottom="10dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" />
<androidx.recyclerview.widget.RecyclerView <TextView
android:id="@+id/capacity_measurementRel" android:id="@+id/tv_capacity_measurement"
android:layout_width="match_parent" android:layout_width="wrap_content"
android:layout_height="0dp" android:layout_height="wrap_content"
android:layout_marginLeft="10dp" android:layout_marginTop="20dp"
android:layout_marginTop="10dp" android:text="POI任务测试"
app:layout_constraintBottom_toTopOf="@id/btn" android:textColor="@color/colorGray"
app:layout_constraintTop_toBottomOf="@id/tv_capacity_measurement" /> android:textSize="30sp"
app:layout_constraintLeft_toLeftOf="@id/rl_capacity_measurement"
app:layout_constraintRight_toRightOf="@id/rl_capacity_measurement"
app:layout_constraintTop_toBottomOf="@+id/rl_capacity_measurement" />
<Button
android:id="@+id/btn"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:background="@drawable/shape_login"
android:text="提交"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/capacity_measurementRel"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
app:layout_constraintBottom_toTopOf="@id/btn"
app:layout_constraintTop_toBottomOf="@id/tv_capacity_measurement" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -25,14 +25,22 @@
android:src="@drawable/ic_baseline_arrow" android:src="@drawable/ic_baseline_arrow"
/> />
</LinearLayout> </LinearLayout>
<com.jcodecraeer.xrecyclerview.XRecyclerView <androidx.core.widget.NestedScrollView
android:id="@+id/task_capacity2_recycler"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
app:layout_constraintTop_toBottomOf="@+id/rl_capacity2" app:layout_constraintTop_toBottomOf="@id/rl_capacity2"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" android:id="@+id/nsv">
app:layout_constraintStart_toStartOf="parent" <com.jcodecraeer.xrecyclerview.XRecyclerView
/> android:id="@+id/task_capacity2_recycler"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintTop_toBottomOf="@+id/rl_capacity2"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
/>
</androidx.core.widget.NestedScrollView>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
</LinearLayout>

View File

@ -2,191 +2,173 @@
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="wrap_content">
<TextView <TextView
android:id="@+id/tv_measure_text1" android:id="@+id/tv_measure_text1"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="1、以下哪种拍图做法正确?"
android:layout_marginLeft="15dp" android:layout_marginLeft="15dp"
android:text="1、以下哪种拍图做法正确?"
app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<LinearLayout <LinearLayout
android:id="@+id/ll_choose1" android:id="@+id/ll_option"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:orientation="vertical" android:orientation="vertical"
app:layout_constraintTop_toBottomOf="@id/tv_measure_text1"> app:layout_constraintTop_toBottomOf="@id/tv_measure_text1">
<RadioGroup
android:layout_width="match_parent"
android:layout_margin="10dp"
android:layout_height="wrap_content">
<RadioButton
android:id="@+id/rb_tv_measureA"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="选项Axxxx" />
<RadioButton
android:id="@+id/rb_tv_measureB"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="选项Bxxxx" />
<RadioButton
android:id="@+id/rb_tv_measureC"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="选项Cxxxx" />
<RadioButton
android:id="@+id/rb_tv_measureD"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="选项Dxxxx" />
</RadioGroup>
</LinearLayout> </LinearLayout>
<TextView
android:id="@+id/tv_measure_text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2、以下哪张图片正确"
app:layout_constraintTop_toBottomOf="@id/ll_choose1"
app:layout_constraintLeft_toLeftOf="@id/tv_measure_text1"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/ll_choose2"
app:layout_constraintTop_toBottomOf="@id/tv_measure_text2"
android:orientation="vertical">
<RadioGroup
android:layout_width="match_parent"
android:layout_margin="10dp"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/ll_measureA"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<RadioButton
android:layout_width="match_parent" <!-- <LinearLayout-->
android:layout_height="wrap_content" <!-- android:id="@+id/ll_choose2"-->
android:text="选项A"/> <!-- android:layout_width="match_parent"-->
<ImageView <!-- android:layout_height="wrap_content"-->
android:layout_width="100dp" <!-- android:orientation="vertical"-->
android:layout_height="100dp" <!-- android:visibility="gone"-->
android:src="@drawable/select_check" <!-- app:layout_constraintTop_toBottomOf="@id/tv_measure_text1">-->
android:id="@+id/iv_measureA" <!-- <LinearLayout-->
/> <!-- android:id="@+id/ll_measureA"-->
</LinearLayout> <!-- android:layout_width="match_parent"-->
<LinearLayout <!-- android:layout_height="wrap_content"-->
android:id="@+id/ll_measureB" <!-- android:orientation="vertical">-->
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<RadioButton
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="选项A"/>
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/select_check"
android:id="@+id/iv_measureB"/>
</LinearLayout>
<LinearLayout
android:id="@+id/ll_measureC"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<RadioButton
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="选项A"/>
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/select_check"
android:id="@+id/iv_measureC"/>
</LinearLayout>
<LinearLayout
android:id="@+id/ll_measureD"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<RadioButton
android:layout_width="match_parent" <!-- <CheckBox-->
android:layout_height="wrap_content" <!-- android:id="@+id/cb_measureA"-->
android:text="选项A"/> <!-- style="@style/Widget.AppCompat.CompoundButton.RadioButton"-->
<ImageView <!-- android:layout_width="match_parent"-->
android:layout_width="100dp" <!-- android:layout_height="wrap_content"-->
android:layout_height="100dp" <!-- android:text="选项A" />-->
android:src="@drawable/select_check"
android:id="@+id/iv_measureD"/>
</LinearLayout>
<LinearLayout
android:visibility="gone"
android:id="@+id/ll_measureE"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<RadioButton
android:layout_width="match_parent" <!-- <ImageView-->
android:layout_height="wrap_content" <!-- android:id="@+id/iv_measureA"-->
android:text="选项A"/> <!-- android:layout_width="100dp"-->
<ImageView <!-- android:layout_height="100dp"-->
android:layout_width="100dp" <!-- android:src="@drawable/select_check" />-->
android:layout_height="100dp" <!-- </LinearLayout>-->
android:src="@drawable/select_check"
android:id="@+id/iv_measureE"/>
</LinearLayout>
<LinearLayout
android:visibility="gone"
android:id="@+id/ll_measureF"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<RadioButton
android:layout_width="match_parent" <!-- <LinearLayout-->
android:layout_height="wrap_content" <!-- android:id="@+id/ll_measureB"-->
android:text="选项A"/> <!-- android:layout_width="match_parent"-->
<ImageView <!-- android:layout_height="wrap_content"-->
android:layout_width="100dp" <!-- android:orientation="vertical">-->
android:layout_height="100dp"
android:src="@drawable/select_check"
android:id="@+id/iv_measureF"/>
</LinearLayout>
<LinearLayout
android:id="@+id/ll_measureG"
android:visibility="gone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<RadioButton
android:layout_width="match_parent" <!-- <CheckBox-->
android:layout_height="wrap_content" <!-- android:id="@+id/cb_measureB"-->
android:text="选项A"/> <!-- style="@style/Widget.AppCompat.CompoundButton.RadioButton"-->
<ImageView <!-- android:layout_width="match_parent"-->
android:layout_width="100dp" <!-- android:layout_height="wrap_content"-->
android:layout_height="100dp" <!-- android:text="选项A" />-->
android:src="@drawable/select_check"
android:id="@+id/iv_measureG"/> <!-- <ImageView-->
</LinearLayout> <!-- android:id="@+id/iv_measureB"-->
</RadioGroup> <!-- android:layout_width="100dp"-->
</LinearLayout> <!-- android:layout_height="100dp"-->
<!-- android:src="@drawable/select_check" />-->
<!-- </LinearLayout>-->
<!-- <LinearLayout-->
<!-- android:id="@+id/ll_measureC"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:orientation="vertical">-->
<!-- <CheckBox-->
<!-- android:id="@+id/cb_measureC"-->
<!-- style="@style/Widget.AppCompat.CompoundButton.RadioButton"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:text="选项A" />-->
<!-- <ImageView-->
<!-- android:id="@+id/iv_measureC"-->
<!-- android:layout_width="100dp"-->
<!-- android:layout_height="100dp"-->
<!-- android:src="@drawable/select_check" />-->
<!-- </LinearLayout>-->
<!-- <LinearLayout-->
<!-- android:id="@+id/ll_measureD"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:orientation="vertical">-->
<!-- <CheckBox-->
<!-- android:id="@+id/cb_measureD"-->
<!-- style="@style/Widget.AppCompat.CompoundButton.RadioButton"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:text="选项A" />-->
<!-- <ImageView-->
<!-- android:id="@+id/iv_measureD"-->
<!-- android:layout_width="100dp"-->
<!-- android:layout_height="100dp"-->
<!-- android:src="@drawable/select_check" />-->
<!-- </LinearLayout>-->
<!-- <LinearLayout-->
<!-- android:id="@+id/ll_measureE"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:orientation="vertical"-->
<!-- android:visibility="gone">-->
<!-- <CheckBox-->
<!-- style="@style/Widget.AppCompat.CompoundButton.RadioButton"-->
<!-- android:id="@+id/cb_measureE"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:text="选项A" />-->
<!-- <ImageView-->
<!-- android:id="@+id/iv_measureE"-->
<!-- android:layout_width="100dp"-->
<!-- android:layout_height="100dp"-->
<!-- android:src="@drawable/select_check" />-->
<!-- </LinearLayout>-->
<!-- <LinearLayout-->
<!-- android:id="@+id/ll_measureF"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:orientation="vertical"-->
<!-- android:visibility="gone">-->
<!-- <RadioButton-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:text="选项A" />-->
<!-- <ImageView-->
<!-- android:id="@+id/iv_measureF"-->
<!-- android:layout_width="100dp"-->
<!-- android:layout_height="100dp"-->
<!-- android:src="@drawable/select_check" />-->
<!-- </LinearLayout>-->
<!-- <LinearLayout-->
<!-- android:id="@+id/ll_measureG"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:orientation="vertical"-->
<!-- android:visibility="gone">-->
<!-- <RadioButton-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:text="选项A" />-->
<!-- <ImageView-->
<!-- android:id="@+id/iv_measureG"-->
<!-- android:layout_width="100dp"-->
<!-- android:layout_height="100dp"-->
<!-- android:src="@drawable/select_check" />-->
<!-- </LinearLayout>-->
<!-- </LinearLayout>-->
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent"
>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

Binary file not shown.

After

Width:  |  Height:  |  Size: 444 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -42,4 +42,17 @@
<item name="android:textSize">12sp</item> <item name="android:textSize">12sp</item>
<item name="android:textColor">#EDBCBABA</item> <item name="android:textColor">#EDBCBABA</item>
</style> </style>
<!-- 登录选择器-->
<style name="sty1">
<item name="android:background">#ffffff</item>
<item name="android:textSize">15sp</item>
</style>
<style name="sty2" parent="@style/sty1">
<item name="android:textColor">#471862</item>
<item name="android:background">#03A9F4</item>
</style>
设置属性:
</resources> </resources>