以下是一个使用Android Studio的多选答案ArrayList的测验应用程序的解决方法:
首先,在Android Studio中创建一个新的项目。
然后,打开app目录下的build.gradle文件,并在dependencies块中添加以下依赖项:
dependencies {
implementation 'androidx.appcompat:appcompat:1.3.1'
implementation 'androidx.recyclerview:recyclerview:1.2.1'
}
接下来,创建一个新的Java类,名为Question。
public class Question {
private String question;
private ArrayList answers;
private ArrayList correctAnswers;
public Question(String question, ArrayList answers, ArrayList correctAnswers) {
this.question = question;
this.answers = answers;
this.correctAnswers = correctAnswers;
}
public String getQuestion() {
return question;
}
public ArrayList getAnswers() {
return answers;
}
public ArrayList getCorrectAnswers() {
return correctAnswers;
}
}
然后,创建一个新的Java类,名为QuestionAdapter。
public class QuestionAdapter extends RecyclerView.Adapter {
private ArrayList questions;
private ArrayList> selectedAnswers;
public QuestionAdapter(ArrayList questions) {
this.questions = questions;
this.selectedAnswers = new ArrayList<>();
for (int i = 0; i < questions.size(); i++) {
ArrayList selected = new ArrayList<>();
for (int j = 0; j < questions.get(i).getAnswers().size(); j++) {
selected.add(false);
}
selectedAnswers.add(selected);
}
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_question, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
Question question = questions.get(position);
holder.questionTextView.setText(question.getQuestion());
ArrayList answers = question.getAnswers();
ArrayList selected = selectedAnswers.get(position);
for (int i = 0; i < answers.size(); i++) {
CheckBox checkBox = new CheckBox(holder.itemView.getContext());
checkBox.setText(answers.get(i));
checkBox.setChecked(selected.get(i));
checkBox.setOnCheckedChangeListener((buttonView, isChecked) -> {
selected.set(i, isChecked);
});
holder.answersLinearLayout.addView(checkBox);
}
}
@Override
public int getItemCount() {
return questions.size();
}
public ArrayList> getSelectedAnswers() {
return selectedAnswers;
}
public static class ViewHolder extends RecyclerView.ViewHolder {
TextView questionTextView;
LinearLayout answersLinearLayout;
public ViewHolder(@NonNull View itemView) {
super(itemView);
questionTextView = itemView.findViewById(R.id.questionTextView);
answersLinearLayout = itemView.findViewById(R.id.answersLinearLayout);
}
}
}
接下来,创建一个名为MainActivity的Java类,并在布局文件activity_main.xml中添加一个RecyclerView。
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private QuestionAdapter questionAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
ArrayList answers1 = new ArrayList<>();
answers1.add("A");
answers1.add("B");
answers1.add("C");
ArrayList correctAnswers1 = new ArrayList<>();
correctAnswers1.add("A");
correctAnswers1.add("B");
Question question1 = new Question("Question 1", answers1, correctAnswers1);
ArrayList answers2 = new ArrayList<>();
answers2.add("A");
answers2.add("B");
answers2.add("C");
ArrayList correctAnswers2 = new ArrayList<>();
correctAnswers2.add("B");
Question question2 = new Question("Question 2", answers2, correctAnswers2);
ArrayList answers3 = new ArrayList<>();
answers3.add("A");
answers3.add("B");
answers3.add("C");
ArrayList correctAnswers3 = new ArrayList<>();
correctAnswers3.add("C");
Question question3 = new Question("Question 3", answers3, correctAnswers3);
ArrayList questions = new ArrayList<>();
questions.add(question1);
questions.add(question2);
questions.add(question3);
questionAdapter = new QuestionAdapter(questions);
recyclerView.setAdapter(questionAdapter);
Button submitButton = findViewById(R