package
com.example.firebaseproject
import
android.annotation.SuppressLint
import
android.content.Context
import
android.os.Bundle
import
android.util.Log
import
android.widget.Toast
import
androidx.activity.ComponentActivity
import
androidx.activity.compose.setContent
import
androidx.compose.foundation.ExperimentalFoundationApi
import
androidx.compose.foundation.Image
import
androidx.compose.foundation.layout.*
import
androidx.compose.foundation.lazy.GridCells
import
androidx.compose.foundation.lazy.LazyVerticalGrid
import
androidx.compose.material.*
import
androidx.compose.runtime.Composable
import
androidx.compose.runtime.mutableStateListOf
import
androidx.compose.runtime.snapshots.SnapshotStateList
import
androidx.compose.ui.Alignment
import
androidx.compose.ui.Modifier
import
androidx.compose.ui.graphics.Color
import
androidx.compose.ui.platform.LocalContext
import
androidx.compose.ui.semantics.Role.Companion.Image
import
androidx.compose.ui.text.style.TextAlign
import
androidx.compose.ui.unit.dp
import
coil.compose.rememberAsyncImagePainter
import
com.example.firebaseproject.ui.theme.FirebaseProjectTheme
import
com.example.firebaseproject.ui.theme.greenColor
import
com.google.firebase.auth.*
import
com.google.firebase.firestore.DocumentSnapshot
import
com.google.firebase.firestore.FirebaseFirestore
class
MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super
.onCreate(savedInstanceState)
setContent {
FirebaseProjectTheme {
Surface(
modifier = Modifier.fillMaxSize(), color = MaterialTheme.colors.background
) {
Scaffold(
topBar = {
TopAppBar(backgroundColor = greenColor,
title = {
Text(
text =
"GFG"
,
modifier = Modifier.fillMaxWidth(),
textAlign = TextAlign.Center,
color = Color.White
)
})
}) {
gridView(LocalContext.current)
}
}
}
}
}
}
@SuppressLint
(
"UnrememberedMutableState"
)
@OptIn
(ExperimentalFoundationApi::
class
, ExperimentalMaterialApi::
class
)
@Composable
fun gridView(context: Context) {
var courseList = mutableStateListOf<GridModal?>()
val db: FirebaseFirestore = FirebaseFirestore.getInstance()
db.collection(
"Data"
).get().addOnSuccessListener {
if
(!it.isEmpty()) {
val list: List<DocumentSnapshot> = it.getDocuments()
for
(d in list) {
val dataModal: GridModal? = d.toObject(GridModal::
class
.java)
if
(dataModal !=
null
) {
courseList.add(GridModal(name = dataModal.name, imageUrl = dataModal.imageUrl))
}
}
}
else
{
Toast.makeText(context,
"No data found in Database"
, Toast.LENGTH_SHORT)
.show()
}
}
LazyVerticalGrid(
cells = GridCells.Fixed(
2
),
modifier = Modifier.padding(
10
.dp)
) {
items(courseList.size) {
Card(
onClick = {
Toast.makeText(
context,
courseList[it]!!.name +
" selected.."
,
Toast.LENGTH_SHORT
).show()
},
modifier = Modifier.padding(
8
.dp),
elevation =
6
.dp
) {
Column(
Modifier
.fillMaxSize()
.padding(
5
.dp),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center
) {
Image(
painter = rememberAsyncImagePainter(courseList[it]!!.imageUrl),
contentDescription =
"gfg image"
,
modifier = Modifier
.wrapContentSize()
.wrapContentHeight()
.wrapContentWidth()
)
Spacer(modifier = Modifier.height(
9
.dp))
Text(
text = courseList[it]!!.name,
modifier = Modifier.padding(
4
.dp),
color = Color.Black
)
}
}
}
}
}