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.example.newcanaryproject.ui.theme.*
import
retrofit2.Call
import
retrofit2.Callback
import
retrofit2.Response
import
retrofit2.Retrofit
import
retrofit2.converter.gson.GsonConverterFactory
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 getJSONData(courseList: MutableList<String>, ctx: Context) {
val retrofit = Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create())
.build()
val retrofitAPI = retrofit.create(RetrofitAPI::
class
.java)
val call: Call<ArrayList<ListModal>> = retrofitAPI.getLanguages()
call!!.enqueue(object : Callback<ArrayList<ListModal>?> {
override fun onResponse(
call: Call<ArrayList<ListModal>?>,
response: Response<ArrayList<ListModal>?>
) {
if
(response.isSuccessful) {
var lst: ArrayList<ListModal> = ArrayList()
lst = response.body()!!
for
(i in
0
until lst.size) {
courseList.add(lst.get(i).languageName)
}
}
}
override fun onFailure(call: Call<ArrayList<ListModal>?>, t: Throwable) {
Toast.makeText(ctx,
"Fail to get the data.."
, Toast.LENGTH_SHORT)
.show()
}
})
}
@Composable
fun displayListView() {
val context = LocalContext.current
val courseList = remember { mutableStateListOf<String>() }
getJSONData(courseList, context)
LazyColumn {
items(courseList) { language ->
Text(language, modifier = Modifier.padding(
15
.dp))
Divider()
}
}
}