Skip to content

Instantly share code, notes, and snippets.

public class ObservableValue<T> {
private T t;
private final Subject<T, T> subject = new SerializedSubject<>(PublishSubject.create());
public Observable<T> observable() {
return subject;
}
public T value() {
return t;
package jp.hoge
import android.support.annotation.NonNull;
import java.util.ArrayList;
import java.util.List;
import rx.Observable;
import rx.subjects.PublishSubject;
import rx.subjects.SerializedSubject;
package jp.sample.android.lib.type;
import android.support.annotation.NonNull;
public final class SuccessFailure<Success, Failure> {
public interface SuccessResult<Success> {
void result(Success successResult);
}
package io.github.hkusu.example.lib.type;
import android.support.annotation.NonNull;
import java.util.LinkedHashSet;
import java.util.Set;
public class ImmutableSet<T> {
private final Set<T> set = new LinkedHashSet<>();
package io.github.hkusu.sample.android.lib.rx;
import rx.Observable;
import rx.subjects.PublishSubject;
import rx.subjects.SerializedSubject;
import rx.subjects.Subject;
public class Event<T> {
private final Subject<T, T> subject = new SerializedSubject<>(PublishSubject.create());
@hkusu
hkusu / LiveDataExt.kt
Created April 18, 2019 15:22
suspend function が利用できる map
inline fun <T, U> LiveData<T>.map(
scope: CoroutineScope,
crossinline block: suspend (T) -> U
): LiveData<U> {
val result = MediatorLiveData<U>()
result.addSource(this) {
scope.launch {
result.postValue(block.invoke(it))
}
}
@hkusu
hkusu / SomeViewModel.kt
Last active September 17, 2019 14:53
Androidの連続クリック対策
fun onButtonClicked(view: View?) { // unitテスト時はnullを渡す
view?.disableContinuousClicks()
// do something..
}
@hkusu
hkusu / Dangerfile
Last active December 4, 2019 13:19
github.dismiss_out_of_range_messages
# ktlint
Dir.glob("**//build/reports/ktlint-results.xml").each { |report|
checkstyle_format.base_path = Dir.pwd
checkstyle_format.report report.to_s
}
# Android Lint
Dir.glob("**//build/reports/lint-results*.xml").each { |report|
package io.github.hkusu.sample.ext
import androidx.lifecycle.LiveData
import androidx.lifecycle.MediatorLiveData
import androidx.lifecycle.Observer
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
import kotlin.coroutines.CoroutineContext
inline fun <T, U> LiveData<T>.mapNotNull(
package io.github.hkusu.sample.ui
import android.os.Bundle
import android.view.View
import androidx.fragment.app.Fragment
import io.github.hkusu.sample.databinding.MainFragmentBinding
class MainFragment : Fragment(R.layout.main_fragment) {
private val binding: MainFragmentBinding by viewBinding()