Skip to content

Instantly share code, notes, and snippets.

View damianpetla's full-sized avatar
🐢
Mastering Compose

Damian Petla damianpetla

🐢
Mastering Compose
View GitHub Profile
@Composable
fun LazyList() {
val items = listOf("Dog", "Cat", "Monkey")//1000 of these
LazyColumnFor(items = items) { item ->
Text(text = item)
}
}
@Composable
fun LazyExampleWithIndex() {
val items = listOf("Cat", "Dog", "Monkey")//1000 of these
val lastIndex = items.lastIndex
LazyColumnForIndexed(items = items) { index, item ->
if (lastIndex == index) {
onActive {
//fetch more items from API
}
}
@ExperimentalCoroutinesApi
@Composable
fun LatestNewsFeed(viewModel: NewsViewModel) {
val state = viewModel.newsState.collectAsState()
val lastIndex = state.value.articles.lastIndex
LazyColumnForIndexed(items = state.value.articles) { i, newsItem ->
if (lastIndex == i) {
onActive {
viewModel.getMoreNews()
}
class MainActivity : ComponentActivity() {
private val viewModel by viewModels<MainViewModel>()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
ComposeStateTestTheme {
val state: MainState by viewModel.state.collectAsState()
MainScaffold(
@damianpetla
damianpetla / snackbar.kt
Created July 16, 2022 17:01
MD3 Snackbar sample
val snackBarState = remember { SnackbarHostState() }
Scaffold(
modifier = Modifier.fillMaxSize(),
snackbarHost = {
SnackbarHost(hostState = snackBarState) {
Snackbar {
Text(text = it.visuals.message)
}
}
},
@damianpetla
damianpetla / CurrencyOffsetMapping.kt
Created October 14, 2023 09:28
Transforming EditText value into currency
import androidx.compose.ui.text.input.OffsetMapping
class CurrencyOffsetMapping(originalText: String, formattedText: String) : OffsetMapping {
private val originalLength: Int = originalText.length
private val indexes = findDigitIndexes(originalText, formattedText)
private fun findDigitIndexes(firstString: String, secondString: String): List<Int> {
val digitIndexes = mutableListOf<Int>()
var currentIndex = 0
for (digit in firstString) {