// GroceryItemsFromFile Example // Source code file: MainActivity.kt package it372.ssmith.groceryitemsfromfile import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Button import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() setContent { MainLayout() } } } @Composable fun MainLayout( ) { // Keep track of the Text content. var textContent = remember { mutableStateOf("") } // A Column needs a variable to keep track // of the scroll state. var scrollState = rememberScrollState( ) Column(modifier = Modifier.padding(40.dp) .verticalScroll(scrollState) .fillMaxSize( )) { var grocList = mutableListOf( ) val context = LocalContext.current val inputStream = context.resources. openRawResource(R.raw.groc) inputStream.bufferedReader( ).useLines { it.forEach { var fields = it.split(',') var desc = fields[0] var code = fields[1].toInt( ) var price = fields[2].toDouble( ) var grocItem = GroceryItem(desc, code, price) grocList.add(grocItem) } } Button(onClick = { var output = "" for(v in grocList) { output += "Description: ${v.description}\n" + "Code: ${v.code}\n" + "Price: ${v.price}\n\n" } textContent.value = output; }) { Text(text = "Show Grocery Items") } Text(text = textContent.value, modifier = Modifier .padding(40.dp), fontSize = 25.sp) } } @Preview(showBackground = true) @Composable fun GreetingPreview() { MainLayout( ) }