Skip to content

Instantly share code, notes, and snippets.

@Bruno125
Created November 24, 2022 18:00
Show Gist options
  • Save Bruno125/f886e2deb80889ef36612e3e081ae7ab to your computer and use it in GitHub Desktop.
Save Bruno125/f886e2deb80889ef36612e3e081ae7ab to your computer and use it in GitHub Desktop.
import android.R
import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.*
import androidx.compose.material.RadioButton
import androidx.compose.material.Surface
import androidx.compose.material.Text
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
data class Answer(
val title: String,
val image: Int
)
@Composable
fun SurveyAnswer(answer: Answer,
selected: Boolean = false,
onSelected: (answer: Answer)->Unit = {},
) {
Surface(border = BorderStroke(1.dp, Color.DarkGray)) {
Row(
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.SpaceBetween,
modifier = Modifier.fillMaxWidth()
) {
Image(painter = painterResource(id = answer.image), contentDescription = "Logo")
Text(answer.title)
RadioButton(selected, onClick = {
onSelected(answer)
})
}
}
}
@Composable
fun SingleChoiceQuestion(answers: List<Answer>) {
var selectedAnswer: Answer? by remember {
mutableStateOf(null)
}
Column {
answers.forEach { answer ->
Text("Answer: ${answer.title}")
SurveyAnswer(
answer = answer,
selected = answer == selectedAnswer,
onSelected = { selected ->
selectedAnswer = selected
}
)
}
}
}
@Preview(widthDp = 300)
@Composable
fun SurveyAnswerPreview() {
SurveyAnswer(Answer(
title = "Spark",
image = R.drawable.ic_menu_help
))
}
@Preview(widthDp = 300)
@Composable
fun SingleChoicerPreview() {
SingleChoiceQuestion(listOf(
Answer(
title = "Spark",
image = R.drawable.ic_menu_help
),
Answer(
title = "Otro",
image = R.drawable.ic_menu_add
)
))
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment