Skip to content

Instantly share code, notes, and snippets.

View NikolaDespotoski's full-sized avatar

Nikola Despotoski NikolaDespotoski

View GitHub Profile
import android.arch.lifecycle.LifecycleOwner
import android.arch.lifecycle.MediatorLiveData
import android.arch.lifecycle.MutableLiveData
import android.arch.lifecycle.Observer
import LoadingState
import io.reactivex.Flowable
import io.reactivex.functions.Action
import io.reactivex.functions.Consumer
import io.reactivex.internal.functions.Functions
@NikolaDespotoski
NikolaDespotoski / BaseBindableAdapter.kt
Last active November 29, 2017 19:24
Kotlin operator overloading for RecyclerView operations
abstract class BaseBindableAdapter<T, VH : RecyclerView.ViewHolder> : RecyclerView.Adapter<VH>() {
internal var data: MutableList<T> = mutableListOf()
override fun onBindViewHolder(holder: VH, position: Int) {
val bindable = holder as BindableViewHolder<T>
bindable.bindViewHolder(data[position])
}
override fun getItemCount(): Int = data.size
@NikolaDespotoski
NikolaDespotoski / CustomTabsURLSpan.kt
Created August 29, 2017 22:17
Open clicked links of TextView in CustomTabs
class CustomTabsURLSpan(url: String) : URLSpan(url) {
override fun onClick(widget: View?) {
// do something with url
}
}
import android.arch.lifecycle.ViewModel;
import android.arch.lifecycle.ViewModelProvider;
import android.arch.lifecycle.ViewModelStore;
import android.arch.lifecycle.ViewModelStores;
import android.support.annotation.MainThread;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.util.Log;
import java.lang.reflect.InvocationTargetException;
@NikolaDespotoski
NikolaDespotoski / ViewModelParameterizedProvider.kt
Last active August 12, 2019 08:11
ViewModelProvider that instantiates ViewModel with parameterized constructor
import android.arch.lifecycle.ViewModel
import android.arch.lifecycle.ViewModelProvider
import android.arch.lifecycle.ViewModelStore
import android.arch.lifecycle.ViewModelStores
import android.support.v4.app.Fragment
import android.support.v4.app.FragmentActivity
import java.util.concurrent.atomic.AtomicBoolean
/**
* Created by Nikola on 7/19/2017.
public class RecyclerViewClickListener implements RecyclerView.OnItemTouchListener {
private final OnItemClickedListener mListener;
private final GestureDetector mGestureDetector;
public RecyclerViewClickListener(Context context, OnItemClickedListener onItemClickListener) {
mListener = onItemClickListener;
GestureDetector.OnGestureListener gestureListener = new RecyclerViewGestureListener();
mGestureDetector = new GestureDetector(context, gestureListener);
}
@NikolaDespotoski
NikolaDespotoski / RxCursorIterable.java
Created January 27, 2017 12:05
Iterate Cursor in using RxJava
public class RxCursorIterable implements Iterable<Cursor> {
private Cursor mIterableCursor;
public RxCursorIterable(Cursor c) {
mIterableCursor = c;
}
public static RxCursorIterable from(Cursor c) {
return new RxCursorIterable(c);
public class DragSelectionItemTouchListener extends LongPressItemTouchListener implements RecyclerView.OnItemTouchListener {
private RecyclerView.ViewHolder mPreviousViewHolder;
private Rect mHitRect = new Rect();
private List<RecyclerView.ViewHolder> mRangeSelection = new ArrayList<>();
public DragSelectionItemTouchListener(Context context, OnItemInteractionListener listener) {
super(context, listener);
}
public class CameraAvailabilityPreLolipop extends CameraAvailability implements Runnable {
private final ActivityManager mActivityManager;
private final Handler mHandler;
private final PackageManager mPackageManager;
private final static Intent CAMERA_INTENT = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
private final List<ResolveInfo> mCameraIntents;
private OnCameraReleasedListener mListener;
public CameraAvailabilityPreLolipop(Context context) {
mActivityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
public class CameraAvailabilityLollipop extends CameraAvailability {
private OnCameraReleasedListener mListener;
private String mCurrentCamera;
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public CameraAvailabilityLollipop(Context context) {
final CameraManager cameraManager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);
cameraManager.registerAvailabilityCallback(new CameraManager.AvailabilityCallback() {
@Override
public void onCameraAvailable(@NonNull String cameraId) {