Mobile Apps 2023W Lecture 12: Difference between revisions

From Soma-notes
Created page with " ==Code== <syntaxhighlight lang="kotlin" line> package carleton.comp2601.scrolldemo import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.* import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.material.* import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment impor..."
 
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
==Resources==
* [https://developer.android.com/codelabs/basic-android-kotlin-training-intro-room-flow#0 Rooms and Flow]
==Notes==
To get the ScrollDB app working, you need to (work in progress):
* Create an empty Compose app at the latest API level, 33
* In build.gradle (Project), add <tt>room_version = '2.5.0'</tt> to the "ext" block at the top.
* In build.gradle (Module)
** add <tt>apply plugin: 'kotlin-kapt'</tt> after the plugin block
** add the following to the dependencies block:
    implementation "androidx.room:room-runtime:$room_version"
    implementation "androidx.room:room-ktx:$room_version"
    kapt "androidx.room:room-compiler:$room_version"


==Code==
==Code==

Latest revision as of 20:43, 17 February 2023

Resources

Notes

To get the ScrollDB app working, you need to (work in progress):

  • Create an empty Compose app at the latest API level, 33
  • In build.gradle (Project), add room_version = '2.5.0' to the "ext" block at the top.
  • In build.gradle (Module)
    • add apply plugin: 'kotlin-kapt' after the plugin block
    • add the following to the dependencies block:
   implementation "androidx.room:room-runtime:$room_version"
   implementation "androidx.room:room-ktx:$room_version"
   kapt "androidx.room:room-compiler:$room_version"

Code

package carleton.comp2601.scrolldemo

import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.material.*
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import carleton.comp2601.scrolldemo.database.AppDatabase
import carleton.comp2601.scrolldemo.ui.theme.ScrollDemoTheme

class MainActivity : ComponentActivity() {
    //val database: AppDatabase by lazy { AppDatabase.getDatabase(this) }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            ScrollDemoTheme {
                // A surface container using the 'background' color from the theme
                ScrollList()
                    //ScrollList(database)
            }
        }
    }
}

@Composable
fun ScrollList() {
//fun ScrollList(database: AppDatabase) {

    val listState = rememberLazyListState()

    Surface(
        modifier = Modifier.fillMaxSize(),
        color = MaterialTheme.colors.background
    ) {
        Scaffold(
            topBar = {
                TopAppBar(
                    backgroundColor = MaterialTheme.colors.primary,
                    title = { Text("Scroll Demo") }
                )
            },
            content = {
                LazyColumn(
                    state = listState,
                    modifier = Modifier.fillMaxWidth(),
                    contentPadding = PaddingValues(16.dp),
                    verticalArrangement = Arrangement.spacedBy(16.dp),
                ) {
                    items(20000) { index ->
                        Text(text = "Item: $index")
                    }
                }
            }
        )
    }
}

//@Preview(showBackground = true)
//@Composable
//fun DefaultPreview() {
//    ScrollDemoTheme {
//        ScrollList()
//    }
//}