Skip to content

Instantly share code, notes, and snippets.

@jsh-me
jsh-me / BaseListAdapter.kt
Last active October 16, 2021 12:13
Implement BaseAdapter Using ListAdpater
package com.jshme.feature.home.adapter
import android.annotation.SuppressLint
import android.view.ViewGroup
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import androidx.viewbinding.ViewBinding
internal class HomeAdapter<T: HomeViewHolderModel>
@jsh-me
jsh-me / TouchDetector.kt
Last active October 12, 2021 12:21
Implement SingleClick and LongClick using onTouchListener
import android.annotation.SuppressLint
import android.view.MotionEvent
import android.view.View
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
import io.reactivex.rxkotlin.plusAssign
import io.reactivex.schedulers.Schedulers
import io.reactivex.subjects.BehaviorSubject
import java.util.*
import javax.inject.Inject
@jsh-me
jsh-me / result.kt
Created January 17, 2021 07:06
Wrap Callbacks as Coroutines in Android
sealed class Result<out R> {
data class Success<out T>(val data: T) : Result<T>()
data class Error(val exception: Exception) : Result<Nothing>()
}
fun <T>Result<T>.getValue(): T {
return if(this is Result.Success) {
this.data
} else {
class GetUserInfoUseCase (
private val userRepository: UserRepository,
private val cardRepository: CardRepository
) {
suspend operator fun invoke(isUpdated: Boolean): Result<List<User>> {
return when (cardRepository.getCards(isUpdated)) {
is Result.Success -> userRepository.getUserInfo(isUpdated)
else -> Result.Error(Exception("Load Failed"))
}
}
@jsh-me
jsh-me / welcome.txt
Last active December 26, 2020 09:43
welcome
 ∧_∧ hi there.....
(。・ω・。)つ━☆・*。
⊂   ノ    ・゜ 。゚゚・。・゚゚。
しーJ   °   ゚。   。゚
           ゚・。・゚