Skip to content

Instantly share code, notes, and snippets.

import android.support.v7.widget.RecyclerView;
import android.view.ViewGroup;
public abstract class HeaderFooterRecyclerViewAdapter<VH extends RecyclerView.ViewHolder> extends RecyclerView.Adapter<VH> {
private static final int VIEW_TYPE_MAX_COUNT = 1000;
private static final int HEADER_VIEW_TYPE_OFFSET = 0;
private static final int FOOTER_VIEW_TYPE_OFFSET = HEADER_VIEW_TYPE_OFFSET + VIEW_TYPE_MAX_COUNT;
private static final int CONTENT_VIEW_TYPE_OFFSET = FOOTER_VIEW_TYPE_OFFSET + VIEW_TYPE_MAX_COUNT;
package com.younglive.livestreaming.utils.view;
/*
* Author: Felipe Herranz (felhr85@gmail.com)
* Contributors:Francesco Verheye (verheye.francesco@gmail.com)
* Israel Dominguez (dominguez.israel@gmail.com)
*/
import android.os.Handler;
import android.os.Message;
import android.view.View;
@Piasy
Piasy / AutoGenTypeAdapterFactory.java
Last active August 29, 2015 14:27 — forked from JakeWharton/AutoGson.java
A Gson TypeAdapterFactory which allows serialization of @autovalue types. Apache 2 licensed.
import com.google.gson.Gson;
import com.google.gson.TypeAdapter;
import com.google.gson.TypeAdapterFactory;
import com.google.gson.reflect.TypeToken;
public final class AutoGenTypeAdapterFactory implements TypeAdapterFactory {
@SuppressWarnings("unchecked")
@Override
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
@Piasy
Piasy / Inner.java
Created August 21, 2015 17:13
An attempt to make it work when AutoParcel && AutoGson comes with Generic field that also annotated with AutoParcel
package com.github.piasy.model.entities;
import android.support.annotation.NonNull;
import auto.parcel.AutoParcel;
import com.github.piasy.common.utils.model.AutoGson;
/**
* Created by Piasy{github.com/Piasy} on 15/8/21.
*/
@AutoParcel
@Piasy
Piasy / SplashActivityV1.java
Last active October 1, 2015 16:47
App launch accelerate source code
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mFragmentManager = getSupportFragmentManager();
mFragmentManager.beginTransaction()
.add(android.R.id.content, new SplashFragment(), SPLASH_FRAGMENT)
.commit();
Observable.create(subscriber -> {
Timber.plant(new Timber.DebugTree());
for (ResolvedDependency dependency :
project.configurations.getByName("compile").resolvedConfiguration.firstLevelModuleDependencies) {
// dependency是gradle api定义的依赖,可以获取moduleGroup,moduleName,moduleVersion信息,
// 包括maven依赖、本地子module依赖,间接依赖在dependency.children中,
// 而这个依赖的本地文件则在dependency.moduleArtifacts中
}
static Observable<Integer> detect(Observable<Void> clicks, final long maxIntervalMillis,
final int minComboTimesCared) {
return clicks.map(new Func1<Void, Integer>() {
@Override
public Integer call(Void aVoid) {
return 1;
}
}).timestamp()
.scan(new Func2<Timestamped<Integer>, Timestamped<Integer>, Timestamped<Integer>>() {
@Piasy
Piasy / DeepCopy.java
Created February 20, 2016 00:25
Java Immutable Blog
List<Integer> list1 = new ArrayList<>();
list1.add(1);
List<Integer> list2 = new ArrayList<>(list1);
list1.add(2);
@Piasy
Piasy / AndroidManifest.xml
Created February 20, 2016 00:47
Android Runtime Permission test
<uses-permission android:name="android.permission.READ_CONTACTS"/>
@Piasy
Piasy / NonRxAmplitudeAPI.java
Created February 24, 2016 16:39
RxAndroidAudio blog code snippet
public synchronized int getMaxAmplitude();