// Proj4Exa Example // Source code file: MainActivity.kt // Load GroceryItem array from strings.xml // resource file, display the items in // a Text element, and save the items as // a string in an internal file of the // emulator. package it372.ssmith.proj4exa 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.padding import androidx.compose.material3.Button import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableStateListOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringArrayResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import java.io.File import java.io.FileOutputStream class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() setContent { MainLayout( ) } } } @Composable fun MainLayout( ) { val groceryArray = stringArrayResource(R.array.grocery_items) var groceryMutableList = remember { mutableStateListOf( ) } var displayText = remember { mutableStateOf("") } val context = LocalContext.current Column(modifier = Modifier .padding(all = 20.dp), horizontalAlignment = Alignment.Start) { Button(onClick = { val groceryList = groceryArray.toList( ) for(item in groceryList) { groceryMutableList.add(item) } }, modifier = Modifier .padding(all = 20.dp)) { Text(text = "Load", fontSize = 30.sp) } Button(onClick = { var display = "" for (s in groceryMutableList) { val sArray = s.split(";") val desc = sArray[0] val code = sArray[1] val price = sArray[2] display += "Description: $desc\n" + "Code: $code\n" + "Price: $price\n\n" } displayText.value = display }, modifier = Modifier .padding(all = 20.dp)) { Text(text = "Display", fontSize = 30.sp) } Button(onClick = { var groceryString = "[" for(s in groceryMutableList) { groceryString += s + "," } var len = groceryString.length groceryString = groceryString.substring(0, len - 1) groceryString += "]" var s = groceryString var fileName = "groceryString.txt" val file = File(context.filesDir, fileName) FileOutputStream(file, false).bufferedWriter( ) .use { it.write(groceryString) } }, modifier = Modifier .padding(all = 20.dp)) { Text(text = "Save", fontSize = 30.sp) } Text(text = displayText.value) } } @Preview(showBackground = true) @Composable fun MainLayoutPreview() { MainLayout( ) }