CheckboxQuestions es una biblioteca que proporciona varias formas de hacer preguntas. hasta ahora hay Preguntas de sí o no, Preguntas de respuestas múltiples, Y Múltiples preguntas. Estas preguntas usan casillas de verificación para crear una interfaz de usuario elegante que se ajuste perfectamente a su aplicación.
Resumen
demostración XML
(El segundo número de pregunta es dos en lugar de 2 para mostrar que puede poner lo que quiera como número)
Lista de preguntas de demostración
Grabación.de.pantalla.2021-04-22.a.las.8.28.30.AM.mov
(El video de arriba recibe preguntas de una API)
La última versión estable es v1.4.0
para Gradle
En su nivel de proyecto build.gradle primero agregue JitPack:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
En su capa de aplicación build.gradle agregue:
dependencies {
implementation 'com.github.Cyber-cp:CheckboxQuestions:LATEST_RELEASE'
}
para experto
Primero agregue JitPack a su archivo de compilación:
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
Luego agregue la dependencia:
<dependency>
<groupId>com.github.Cyber-cp</groupId>
<artifactId>CheckboxQuestions</artifactId>
<version>LATEST_RELEASE</version>
</dependency>
Esta es la forma más fácil de agregar preguntas. Funciona agregando preguntas a un diseño definido en el archivo xml de diseño. Aquí hay un ejemplo de un archivo de diseño:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="10dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<LinearLayout
android:id="@+id/questionLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center|top"
android:orientation="vertical">
<Button
android:id="@+id/getAnswers"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="logAnswers"
android:text="Press me!" />
</LinearLayout>
</ScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>
(El botón es para obtener las respuestas, la vista de desplazamiento es en caso de que haya demasiadas preguntas y se salgan de la pantalla)
Principalmente nos preocupamos solo por el diseño lineal en la vista de desplazamiento.
LinearLayout linearLayout = findViewById(R.id.questionLayout);
Generador de configuraciones
Ahora queremos crear nuestra lista de preguntas, pero primero debe darle algunas configuraciones para que la vista se muestre a su gusto.
QuestionListSettings questionListSettings = new QuestionListSettings.SettingsBuilder()
.setCheckboxLocation(Question.LEFT)
.setCheckBoxOrientation(Question.SPLIT_VERTICAL)
.setNumberEnabled(false)
.setOptionTextSize(20)
.setQuestionTextSize(24)
.setSpacing(15)
.create();
El setCheckboxLocation()
le permite elegir si las opciones para la pregunta están a la izquierda, al centro oa la derecha de la pantalla. El setCheckBoxOrientation()
le permite elegir si las opciones para la pregunta están apiladas o una al lado de la otra. El setNumberEnabled()
le permite elegir si las preguntas tienen un número visible. El setSpacing()
le permite elegir la distancia entre las opciones. El setQuestionTextSize()
Y setOptionTextSize()
le permite elegir el tamaño del texto para la pregunta y las opciones, respectivamente.
lista de preguntas
Ahora queremos crear nuestra lista de preguntas. Hay 2 formas de hacer esto. Si desea un cuestionario simple de sí o no, simplemente cree una matriz de cadenas llena de preguntas.
String[] string = new String[]{"Is 9+2 = 11?", "Are you happy?", "Did you eat breakfast?"};
Si desea hacer preguntas con una respuesta correcta, cree una ArrayList de Peticiones.
ArrayList<Question> list = new ArrayList<>();
list.add(new Question("How are you?", Question.NO_ANSWER, Question.MULTIPLE_CHOICE_QUESTION, "Good", "Bad"));
list.add(new Question("What is 17 * 5", 3, Question.MULTIPLE_CHOICE_QUESTION, "12", "22", "85", "105", "117"));
(Puedes añadir tantas preguntas como quieras)
Creación de la lista de preguntas
A continuación, queremos crear nuestra lista de preguntas usando la configuración que creó y la lista/matriz que creó.
QuestionList questionList = new QuestionList(list, questionListSettings, context);
Obtener las preguntas y verlas
Ahora, si desea crear las vistas, llame createQuestionViews()
.
questionList.createQuestionViews();
Para agregar vistas a su diseño, puede usar:
linearLayout.addView(questionList.getQuestionViews());
Todos los métodos
createQuestionViews()
Genera todas las vistas de preguntas. Se almacenan en un LinearLayout.
getQuestionViews()
Devuelve un LinearLayout lleno de visualizaciones de preguntas.
areAllQuestionsAnswered()
Devuelve un valor booleano que es verdadero si se respondieron todas las preguntas y falso si no se respondieron todas.
getPercentageOfCorrectAnswers()
Devuelve un valor decimal de cuántas respuestas son correctas.
getSelectedAnswers()
Devuelve una Object ArrayList llena de las respuestas seleccionadas. Puede desplazarse por la lista de arreglos usando for(Object answer : answers)
y puede tratar de transmitir cada respuesta a un tema específico, por ejemplo (int) answer
.
getQuestion(int index)
Devuelve una vista que puede ser MultipleChoiceQuestion o YesOrNoQuestion. Puede transmitir la vista a un tipo específico de pregunta y usar cualquier método que desee.
((MultipleChoiceQuestion) questionList.getQuestion(1)).setCheckedOption(0);
addOnAnswerChangedListener(int index, OnAnswerChangedListener onAnswerChangedListener)
Un oyente que le permite ejecutar código cada vez que cambia la respuesta, el índice es el índice de la pregunta en la lista de preguntas.
YesOrNoQuestions es un formulario de pregunta simple que muestra una pregunta con un número y solo permite sí o no como respuesta, mientras que MultipleChoiceQuestions permite cualquier cosa como una opción. Para usarlo en un diseño XML, simplemente use el siguiente código:
<com.aadyad.checkboxquestion.Views.YesOrNoQuestion
android:layout_height="wrap_content"
android:layout_width="wrap_content"
app:number_enabled="true"
app:spacing_between_boxes="35"
app:checkbox_location="center"
app:checkbox_orientation="horizontal"
app:question_number="1"
app:question_title="Do you have a cold?"
app:correct_answer="0"
app:question_text_size="20"
app:option_text_size="18" />
Número habilitado
El number_enabled
el atributo le permite hacer que el número sea visible o no.
Espaciado entre cajas
El spacing_between_boxes
El atributo le permite elegir el espacio entre las casillas de verificación.
Casilla de verificación de ubicación
El checkbox_location
le permite elegir si las casillas de verificación se ubican a la izquierda, al centro oa la derecha de la pantalla. Para especificar dónde están solo usa app:checkbox_location="left"
, app:checkbox_location="center"
, oapp:checkbox_location="right"
.
Orientación de la casilla de verificación
El checkbox_orientation
El atributo le permite elegir si las casillas de verificación se apilan o si son horizontales. Para apilarlos usa app:checkbox_orientation="split_vertical"
usar uso horizontal app:checkbox_orientation="horizontal"
Numero de aplicacion
El question_number
atributo le permite establecer el número de pregunta.
Título de la pregunta
El question_title
atributo le permite establecer el texto de la pregunta.
Respuesta correcta
El correct_answer
atributo le permite establecer la respuesta correcta. Poner 0 para no responder.
Tamaño del texto de la pregunta
El question_text_size
el atributo le permite establecer el tamaño del texto de la pregunta.
Opción de tamaño de texto
El option_text_size
El atributo establece el tamaño del texto de la opción.
Métodos
addOnAnswerChangedListener(OnAnswerChangedListener onAnswerChangedListener)
Un oyente que le permite ejecutar código cada vez que cambia la respuesta.
setCheckedOption(String option)
Le permite elegir qué opción se selecciona usando el texto de la opción.
setCheckedOption(int option)
Le permite elegir qué opción se selecciona utilizando el índice de opciones (comienza en 1, NO en 0).
setCheckboxOrientation(int orientation)
Establezca la orientación de las casillas de verificación.
setQuestionTextSize(float questionTextSize)
Establezca el tamaño del texto de la pregunta.
setOptionTextSize(float optionTextSize)
Establezca el tamaño del texto para las opciones.
getSelectedAnswer()
Devuelve un int de la respuesta seleccionada.
setQuestion(String question)
Establecer el texto de la pregunta.
setQuestionNumber(String number)
Establezca el número de pregunta.
getQuestionTitleTextView()
Devuelve TextView que contiene el texto de la pregunta.
getQuestionNumberTextView()
Devuelve TextView que contiene el texto del número de pregunta.
getCorrectAnswer()
Devuelve un int que es el índice de la respuesta correcta (el índice comienza en 1, NO en 0). Si devuelve 1, la primera casilla de verificación es la respuesta correcta
isAnswerCorrect()
Devuelve un valor booleano que es verdadero si la respuesta seleccionada coincide con la respuesta correcta y falso en caso contrario.
setCorrectAnswer(int correctAnswer)
Establezca la respuesta correcta a la pregunta.
<com.aadyad.checkboxquestion.Views.MultipleChoiceQuestion
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:question_title="What is the slope-intercept equation of a line?"
app:correct_answer="0"
app:question_number="10"
app:number_enabled="true"
app:option_text_size="20"
app:question_text_size="25"
app:spacing_between_boxes="30"
app:checkbox_orientation="full_vertical"
app:option_1="x = ym + b"
app:option_2="y = mx + b"
app:option_3="y = mb * x"
app:option_4="b = my / x"/>
Número habilitado
El number_enabled
el atributo le permite hacer que el número sea visible o no.
Espaciado entre cajas
El spacing_between_boxes
El atributo le permite elegir el espacio entre las casillas de verificación.
Casilla de verificación de ubicación
El checkbox_location
le permite elegir si las casillas de verificación se ubican a la izquierda, al centro oa la derecha de la pantalla. Para especificar dónde están solo usa app:checkbox_location="left"
, app:checkbox_location="center"
, oapp:checkbox_location="right"
.
Orientación de la casilla de verificación
El checkbox_orientation
El atributo le permite elegir si las casillas de verificación se apilan o si son horizontales. Para apilarlos usa app:checkbox_orientation="split_vertical"
usar uso horizontal app:checkbox_orientation="horizontal"
Numero de aplicacion
El question_number
atributo le permite establecer el número de pregunta.
Título de la pregunta
El question_title
atributo le permite establecer el texto de la pregunta.
Respuesta correcta
El correct_answer
atributo le permite establecer la respuesta correcta. Poner 0 para no responder.
Tamaño del texto de la pregunta
El question_text_size
el atributo le permite establecer el tamaño del texto de la pregunta.
Opción de tamaño de texto
El option_text_size
El atributo establece el tamaño del texto de la opción.
Opciones
El option_1
establece el texto para la opción 1. El option_2
establece el texto para la opción 2. El option_3
establece el texto para la opción 3. El option_4
El atributo establece el texto para la opción 4.
Métodos
setCheckedOption(String option)
Le permite elegir qué opción se selecciona usando el texto de la opción.
setCheckedOption(int option)
Le permite elegir qué opción se selecciona utilizando el índice de opciones (comienza en 1, NO en 0).
addOnAnswerChangedListener(OnAnswerChangedListener onAnswerChangedListener)
Un oyente que le permite ejecutar código cada vez que cambia la respuesta.
setCheckboxOrientation(int orientation)
Establezca la orientación de las casillas de verificación.
setQuestionTextSize(float questionTextSize)
Establezca el tamaño del texto de la pregunta.
setOptionTextSize(float optionTextSize)
Establezca el tamaño del texto para las opciones.
getSelectedAnswer()
Devuelve un int de la respuesta seleccionada.
setQuestion(String question)
Establecer el texto de la pregunta.
getOptions()
Devuelve una matriz de cadenas con todas las opciones proporcionadas por la pregunta.
getCheckbox(int index)
Devuelve un objeto Checkbox en un índice dado (el índice comienza en 0).
getQuestionTitleTextView()
Devuelve TextView que contiene el texto de la pregunta.
getQuestionNumberTextView()
Devuelve TextView que contiene el texto del número de pregunta.
getCorrectAnswer()
Devuelve un int que es el índice de la respuesta correcta (el índice comienza en 1, NO en 0). Si devuelve 1, la primera casilla de verificación es la respuesta correcta
isAnswerCorrect()
Devuelve un valor booleano que es verdadero si la respuesta seleccionada coincide con la respuesta correcta y falso en caso contrario.
setCorrectAnswer(int correctAnswer)
Establezca la respuesta correcta a la pregunta.
setOptionText(int index, String text)
Establece el texto de una opción recuperada de un índice. La opción se recupera del índice en el orden en que se pueden ver.
<com.aadyad.checkboxquestion.Views.MultipleAnswerQuestion
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:question_title="Which equations are equivalent to 90 + 30"
app:question_number="10"
app:number_enabled="true"
app:option_text_size="20"
app:question_text_size="25"
app:spacing_between_boxes="30"
app:checkbox_orientation="full_vertical"
app:option_1="91 + 29"
app:option_2="50 + 70"
app:option_3="100 + 20"
app:option_4="99 + 890980"/>
Número habilitado
El number_enabled
el atributo le permite hacer que el número sea visible o no.
Espaciado entre cajas
El spacing_between_boxes
El atributo le permite elegir el espacio entre las casillas de verificación.
Casilla de verificación de ubicación
El checkbox_location
le permite elegir si las casillas de verificación se ubican a la izquierda, al centro oa la derecha de la pantalla. Para especificar dónde están solo usa app:checkbox_location="left"
, app:checkbox_location="center"
, oapp:checkbox_location="right"
.
Orientación de la casilla de verificación
El checkbox_orientation
El atributo le permite elegir si las casillas de verificación se apilan o si son horizontales. Para apilarlos usa app:checkbox_orientation="split_vertical"
usar uso horizontal app:checkbox_orientation="horizontal"
Numero de aplicacion
El question_number
atributo le permite establecer el número de pregunta.
Título de la pregunta
El question_title
atributo le permite establecer el texto de la pregunta.
Tamaño del texto de la pregunta
El question_text_size
el atributo le permite establecer el tamaño del texto de la pregunta.
Opción de tamaño de texto
El option_text_size
El atributo establece el tamaño del texto de la opción.
Opciones
El option_1
establece el texto para la opción 1. El option_2
establece el texto para la opción 2. El option_3
establece el texto para la opción 3. El option_4
El atributo establece el texto para la opción 4.
Métodos
setCheckedOption(String option)
Le permite elegir qué opción se selecciona usando el texto de la opción.
setCheckedOption(int option)
Le permite elegir qué opción se selecciona utilizando el índice de opciones (comienza en 1, NO en 0).
addOnAnswerChangedListener(OnAnswerChangedListener onAnswerChangedListener)
Un oyente que le permite ejecutar código cada vez que cambia la respuesta.
setCheckboxOrientation(int orientation)
Establezca la orientación de las casillas de verificación.
setQuestionTextSize(float questionTextSize)
Establezca el tamaño del texto de la pregunta.
setOptionTextSize(float optionTextSize)
Establezca el tamaño del texto para las opciones.
getSelectedAnswers()
Devuelve una ArrayList completa de la respuesta seleccionada.
setQuestion(String question)
Establecer el texto de la pregunta.
getOptions()
Devuelve una matriz de cadenas con todas las opciones proporcionadas por la pregunta.
getCheckbox(int index)
Devuelve un objeto Checkbox en un índice dado (el índice comienza en 0).
getQuestionTitleTextView()
Devuelve TextView que contiene el texto de la pregunta.
getQuestionNumberTextView()
Devuelve TextView que contiene el texto del número de pregunta.
getCorrectAnswer()
Devuelve un Integer ArrayList que contiene los índices de las respuestas correctas (el índice comienza en 1, NO en 0).
isAnswerCorrect()
Devuelve un valor booleano que es verdadero si las respuestas seleccionadas coinciden con la respuesta correcta y falso en caso contrario.
setCorrectAnswer(ArrayList<Integer> correctAnswer)
Establezca la respuesta correcta a la pregunta.
setOptionText(int index, String text)
Establece el texto de una opción recuperada de un índice. La opción se recupera del índice en el orden en que se pueden ver.
Preguntas es un objeto que le permite crear una lista de preguntas con preguntas de opción múltiple. Hay 3 constructores para el objeto Pregunta, lo que significa que hay 2 formas de definir su objeto Pregunta
Calle de un solo sentido:
Question q = new Question("What is the slope intercept equation of a line?", 2, Question.MULTIPLE_CHOICE_QUESTION, "x = yb + m", "y = mx + b", "m = yx + b", "b = mx + y");
El primer argumento que se pasa es la pregunta, el tercer argumento es el tipo de pregunta, el cuarto argumento es una matriz de cadenas con posibles respuestas y el segundo argumento es el índice (este índice COMIENZA en 1, NO en 0) de la respuesta correcta en la matriz
El cuarto argumento también se puede escribir como:
new String[]{"x = yb + m", "y = mx + b", "m = yx + b", "b = mx + y"}
Otra forma de crear una pregunta es:
Question q = new Question("What is the slope intercept equation of a line?", "y = mx + b", Question.MULTIPLE_CHOICE_QUESTION, "x = yb + m", "y = mx + b", "m = yx + b", "b = mx + y");
El segundo argumento aquí es una versión de cadena de la respuesta correcta.
La última forma es:
Question q = new Question("What is the slope intercept equation of a line?", new ArrayList<Integer>(Arrays.asList(1, 2, 3)), Question.MULTIPLE_ANSWER_QUESTION, "x = yb + m", "y = mx + b", "m = yx + b", "b = mx + y");
En este ejemplo, el segundo argumento es una ArrayList de enteros de las respuestas correctas. Todo lo demás se mantiene igual.
Si no hay respuesta, el segundo argumento se puede establecer en Pregunta.NO_RESPUESTA (o 0) o nulo.
Un oyente que le permite detectar cuando se cambia la respuesta a una pregunta. Podría verse así:
multipleChoiceQuestion.addOnAnswerChangedListener(new OnAnswerChangedListener() {
@Override
public void onAnswerChanged(int selectedAnswerIndex, String selectedAnswerText) {
}
@Override
public void onAnswerChanged(ArrayList<Integer> listOfSelectedAnswerIndexes) {
}
});
DESCARGO DE RESPONSABILIDAD: Los nombres de las variables pueden ser incorrectos cuando implementa este oyente en su aplicación. Todos los índices utilizados en esta interfaz comienzan en 1. OnAnswerChanged sin ArrayList se usa para YesOrNoQuestions y MultipleChoiceQuestions, mientras que el método con ArrayList es para MultipleAnswerQuestions.
.