Skip to content

Instantly share code, notes, and snippets.

View PierceZ's full-sized avatar

Pierce Zaifman PierceZ

  • Canada
View GitHub Profile
@PierceZ
PierceZ / build.gradle
Created August 24, 2017 13:01
ConstraintLayout's gradle requirements
// Add the Google maven repository
repositories {
maven {
url 'https://maven.google.com'
}
}
// Add to your app's dependencies
dependencies {
compile 'com.android.support.constraint:constraint-layout:1.0.2'
@PierceZ
PierceZ / UnsubscribeExample.java
Created August 17, 2017 12:04
An example of how to unsubscribe from RxBus.
public static Disposable subscribe(@Subject int subject, @NonNull Object lifecycle, @NonNull Consumer<Object> action) {
Disposable disposable = getSubject(subject).subscribe(action);
getCompositeDisposable(lifecycle).add(disposable);
return disposable;
}
//In your code
Disposable disposable = RxBus.subscribe(RxBus.SUBJECT_MY_EVENT, this, action);
@PierceZ
PierceZ / LiveDataBusExample.java
Last active April 17, 2018 08:12
An example of how to use the LiveDataBus class.
//Example Activity
public class MyActivity extends BaseActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.myactivity);
// with lambda
LiveDataBus.subscribe(LiveDataBus.SUBJECT_DATA_LOADED, this, (data) -> {
@PierceZ
PierceZ / EventLiveData.java
Last active April 17, 2018 08:12
A LiveData implementation for my event bus to send Objects.
public class EventLiveData extends LiveData<Object> {
private final int mSubject;
public EventLiveData(@LiveDataBus.Subject int subject) {
mSubject = subject;
}
public void update(Object object) {
postValue(object);
@PierceZ
PierceZ / BaseFragment.java
Created July 21, 2017 15:52
BaseActivity that implements the LifecycleRegistryOwner interface.
public abstract class BaseFragment extends Fragment implements LifecycleRegistryOwner {
private final LifecycleRegistry mRegistry = new LifecycleRegistry(this);
@Override
public LifecycleRegistry getLifecycle() {
return mRegistry;
}
}
@PierceZ
PierceZ / BaseActivity.java
Created July 21, 2017 15:48
BaseActivity that implements LifecycleRegistryOwner.
public abstract class BaseActivity extends AppCompatActivity implements LifecycleRegistryOwner {
private final LifecycleRegistry mRegistry = new LifecycleRegistry(this);
@Override
public LifecycleRegistry getLifecycle() {
return mRegistry;
}
}
@PierceZ
PierceZ / LiveDataBus.java
Last active March 28, 2019 22:49
An event bus using Google's LiveData and LifecycleRegistryOwner.
public final class LiveDataBus {
private static SparseArray<EventLiveData> sSubjectMap = new SparseArray<>();
public static final int SUBJECT_DATA_LOADED = 0, SUBJECT_DOWNLOAD_COMPLETE = 1;
@Retention(SOURCE)
@IntDef({SUBJECT_DATA_LOADED, SUBJECT_DOWNLOAD_COMPLETE})
@interface Subject {
@PierceZ
PierceZ / UserDeserializer.java
Created June 10, 2017 13:22
A custom Gson deserializer.
public class UserDeserializer implements JsonDeserializer<User> {
@Override
public User deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
User user = new User();
// custom parsing logic goes here
return user;
}
}
@PierceZ
PierceZ / MyAPIBuilder.java
Last active June 10, 2017 13:38
An example of a static holder for retrofit APIs.
public final class MyAPIBuilder {
private static final String BASE_URL = "https://MySuperGreatAPI.com/";
private static MyAPI sMyAPI;
private MyAPIBuilder() {
}
public static MyAPI getMyAPI() {
@PierceZ
PierceZ / MyAPI.java
Created June 10, 2017 12:56
An example retrofit API interface.
public interface MyAPI {
@GET("some_json")
Observable<JsonObject> getJson(@Header("header1") String header1);
@GET("my_user")
Observable<User> getUserInfo();
}