package
com.example.newcanaryproject
import
android.content.Context
import
android.os.Bundle
import
android.widget.Toast
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.items
import
androidx.compose.material.*
import
androidx.compose.runtime.*
import
androidx.compose.ui.Modifier
import
androidx.compose.ui.graphics.*
import
androidx.compose.ui.platform.LocalContext
import
androidx.compose.ui.text.style.TextAlign
import
androidx.compose.ui.unit.*
import
com.android.volley.Request
import
com.android.volley.toolbox.JsonArrayRequest
import
com.android.volley.toolbox.Volley
import
com.example.newcanaryproject.ui.theme.*
class
MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super
.onCreate(savedInstanceState)
setContent {
NewCanaryProjectTheme {
Surface(
modifier = Modifier.fillMaxSize(), color = MaterialTheme.colors.background
) {
Scaffold(
topBar = {
TopAppBar(backgroundColor = greenColor,
title = {
Text(
text =
"JSON Parsing in Android"
,
modifier = Modifier.fillMaxWidth(),
textAlign = TextAlign.Center,
color = Color.White
)
})
}) {
displayListView()
}
}
}
}
}
}
fun parseJSONArray(courseList: MutableList<String>, ctx: Context) {
val queue = Volley.newRequestQueue(ctx)
val request =
JsonArrayRequest(Request.Method.GET, url,
null
, { response ->
try
{
for
(i in
0
until response.length()) {
val respObj = response.getJSONObject(i)
val lngName = respObj.getString(
"languageName"
)
courseList += lngName
}
}
catch
(e: Exception) {
e.printStackTrace()
}
}, { error ->
Toast.makeText(ctx,
"Fail to get response"
, Toast.LENGTH_SHORT)
.show()
})
queue.add(request)
}
@Composable
fun displayListView() {
val context = LocalContext.current
val courseList = remember { mutableStateListOf<String>() }
parseJSONArray(courseList, context)
LazyColumn {
items(courseList) { language ->
Text(language, modifier = Modifier.padding(
15
.dp))
Divider()
}
}
}