package safeluck.drive.evaluation.adapter; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.CompoundButton; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RadioButton; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import safeluck.drive.evaluation.R; import safeluck.drive.evaluation.bean.AnswerStatus; import safeluck.drive.evaluation.bean.Question2Answers; /** * DriveJudge * Created by lzw on 2021/1/13. 14:42:59 * 邮箱:632393724@qq.com * All Rights Saved! Chongqing AnYun Tech co. LTD */ public class LightExamSelectAdapter extends RecyclerView.Adapter { private LayoutInflater inflater; private Context mContext; OnCheckedListener onCheckedListener; OnAddItemListener onAddItemListener; //记录RadioButton的状态 public HashMap state_boolean = new HashMap<>(); private List question2AnswersList = new ArrayList<>(); public LightExamSelectAdapter(Context context) { this.inflater = LayoutInflater.from(context); this.mContext = context; } public void setOnCheckedListener(OnCheckedListener checkedListener){ this.onCheckedListener = checkedListener; } public void setOnAddItemListener(OnAddItemListener onAddItemListener){ this.onAddItemListener = onAddItemListener; } public interface OnCheckedListener{ //position 跟question关联 也就是question_id; void checked(int position,int whichAnswer); } public interface OnAddItemListener{ void add(int pos); } @NonNull @Override public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = inflater.inflate(R.layout.light_exam_select_item,parent,false); MyViewHolder myViewHolder = new MyViewHolder(view); return myViewHolder; } public void setDatas(List answers){ question2AnswersList.clear(); question2AnswersList.addAll(answers); notifyDataSetChanged(); } @Override public void onBindViewHolder(@NonNull MyViewHolder holder, int position) { Question2Answers question2Answers = question2AnswersList.get(position); holder.tv_question.setText(question2Answers.getQuestion()); List answerList = question2Answers.getAnswerStatusList(); holder.linearLayout2.setVisibility(View.GONE);holder.linearLayout3.setVisibility(View.GONE); holder.rb1.setOnCheckedChangeListener(null); holder.tv_answer1.setText(String.format(mContext.getResources().getString(R.string.answer),question2Answers.getAnswerStatusList().get(0).getAnswer())); holder.rb1.setChecked(question2Answers.getAnswerStatusList().get(0).getChoose_flag()==1?true:false); switch (answerList.size()){ case 2: holder.linearLayout2.setVisibility(View.VISIBLE); AnswerStatus answerStatus1 = answerList.get(1); holder.rb2.setOnCheckedChangeListener(null); holder.tv_answer2.setText(String.format(mContext.getResources().getString(R.string.answer),answerStatus1.getAnswer())); holder.rb2.setChecked(answerStatus1.getChoose_flag()==1?true:false); break; case 3: holder.linearLayout2.setVisibility(View.VISIBLE);holder.linearLayout3.setVisibility(View.VISIBLE); AnswerStatus answerStatus2= answerList.get(1); AnswerStatus answerStatus3= answerList.get(2); holder.rb2.setOnCheckedChangeListener(null); holder.rb3.setOnCheckedChangeListener(null); holder.tv_answer2.setText(String.format(mContext.getResources().getString(R.string.answer),answerStatus2.getAnswer())); holder.tv_answer3.setText(String.format(mContext.getResources().getString(R.string.answer),answerStatus3.getAnswer())); holder.rb2.setChecked(answerStatus2.getChoose_flag()==1?true:false); holder.rb3.setChecked(answerStatus3.getChoose_flag()==1?true:false); break; } holder.imageView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (onAddItemListener != null){ onAddItemListener.add(position); } } }); holder.rb1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked){ holder.rb2.setChecked(false); holder.rb3.setChecked(false); if (onCheckedListener!=null){ onCheckedListener.checked(position,0); } } } }); holder.rb2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked){ holder.rb1.setChecked(false); holder.rb3.setChecked(false); onCheckedListener.checked(position,1); } } }); holder.rb3.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked){ holder.rb1.setChecked(false); holder.rb2.setChecked(false); onCheckedListener.checked(position,2); } } }); } @Override public int getItemCount() { return question2AnswersList.size(); } public class MyViewHolder extends RecyclerView.ViewHolder { TextView tv_question; TextView tv_answer1; TextView tv_answer2; TextView tv_answer3; ImageView imageView; RadioButton rb1,rb2,rb3; LinearLayout linearLayout2,linearLayout3; public MyViewHolder(@NonNull View itemView) { super(itemView); linearLayout2 = itemView.findViewById(R.id.ll_light_container2); linearLayout3 = itemView.findViewById(R.id.ll_light_container3); imageView = itemView.findViewById(R.id.iv_delete_item); tv_question = itemView.findViewById(R.id.tv_question); tv_answer1 = itemView.findViewById(R.id.tv_answer1); tv_answer2 = itemView.findViewById(R.id.tv_answer2); tv_answer3 = itemView.findViewById(R.id.tv_answer3); rb1 = itemView.findViewById(R.id.rb1_light); rb2 = itemView.findViewById(R.id.rb2_light); rb3 = itemView.findViewById(R.id.rb3_light); } } }