Skip to content

Instantly share code, notes, and snippets.

View carolinemusyoka's full-sized avatar
:octocat:
so?.let { it -> be (it) }

Carol carolinemusyoka

:octocat:
so?.let { it -> be (it) }
View GitHub Profile
enum class Status {
SUCCESS,
ERROR,
LOADING
}
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.main.view.MainActivity">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/superhero_recycler"
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<androidx.cardview.widget.CardView
android:id="@+id/card_view"
class MainAdapter(private val result: ArrayList<Hero>,
private val clickListener: (Long) -> Unit):
RecyclerView.Adapter<MainAdapter.DataViewHolder>() {
class DataViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bind(hero: Hero, clickListener: (Long) -> Unit ) {
itemView.apply {
superheroName.text = hero.name
Glide.with(superheroImage.context)
.load(hero.image.lg)
class MainActivity : AppCompatActivity() {
private lateinit var viewModel: MainViewModel
private lateinit var adapter: MainAdapter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
class MainViewModel(private val mainRepository: MainRepository) : ViewModel() {
fun getSuperHeroes() = liveData(Dispatchers.IO) {
emit(Resource.loading(data = null))
try {
emit(Resource.success(data = mainRepository.getSuperHeroes()))
} catch (exception: Exception) {
emit(Resource.error(data = null, message = exception.message ?: "Error Occurred!"))
}
}
class ViewModelFactory(private val apiHelper: ApiHelper) : ViewModelProvider.Factory {
override fun <T : ViewModel?> create(modelClass: Class<T>): T {
if (modelClass.isAssignableFrom(MainViewModel::class.java)) {
return MainViewModel(MainRepository(apiHelper)) as T
}
throw IllegalArgumentException("Unknown class name")
}
}
// Preference DataStore
implementation "androidx.datastore:datastore-preferences:1.0.0-alpha04"
<com.google.android.material.chip.ChipGroup
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="15dp"
app:singleLine="true"
android:id="@+id/chip_group"
app:singleSelection="true">
<!-- app:checkedChip="@id/yes"-->
<style name="checkable_chip" parent="Widget.MaterialComponents.Chip.Choice">
<item name="android:checkable">true</item>
<item name="android:textColor">@color/chip_colors_text</item>
<item name="chipBackgroundColor">@color/chip_colors</item>
<item name="checkedIcon">@null</item>
<item name="chipIconVisible">false</item>
<item name="chipStrokeColor">@color/purple</item>
<item name="chipStrokeWidth">1dp</item>
<item name="ensureMinTouchTargetSize">true</item>
<item name="checkedIconVisible">false</item>