Skip to content

Instantly share code, notes, and snippets.

@premnirmal
premnirmal / settings.json
Last active April 23, 2019 00:35
my vscode settings
{
"window.titleBarStyle": "custom",
"workbench.colorTheme": "Yoncé",
"workbench.editor.enablePreview": false,
"window.zoomLevel": 2,
"window.restoreWindows": "none",
"explorer.confirmDelete": false,
"editor.cursorStyle": "block"
}
import com.trello.rxlifecycle2.android.FragmentEvent
import io.reactivex.subjects.BehaviorSubject
/**
* Owner of a Fragment Lifecycle. Your Fragment should implement this interface.
*/
interface FragmentLifeCycleOwner {
val lifecycle: BehaviorSubject<FragmentEvent>
}
class BrowseRecipesFragment : Fragment(), View.OnClickListener {
private val recipeClickListener: RecipeClickListener by ParentActivityDelegate(this)
...
override fun onClick(v: View) {
// Guaranteed to be not null :)
recipeClickListener.onRecipeClicked(recipe)
}
/**
* Delegate that sets and disposes the fragment's listener by casting it to the fragment's activity.
*/
class ParentActivityDelegate<T>(fragment: Fragment) : BaseParentDelegate<T>(fragment) {
override fun extractValue(fragment: Fragment): T? = fragment.activity as? T
}
/**
* Delegate that sets and disposes the fragment's listener by casting it to the fragment's
class BrowseRecipesFragment : Fragment(), View.OnClickListener {
private var recipeClickListener: RecipeClickListener? = null
...
override fun onAttach(context: Context) {
super.onAttach(context)
recipeClickListener = context as RecipeClickListener
}
@premnirmal
premnirmal / NutritionalInfoNet.kt
Last active April 23, 2018 16:13
NutritionalInfo with correct annotations
import com.squareup.moshi.Json
/**
* Class representing a recipe's nutritional information.
* The [calories_per_serving] field here includes the correct annotations for Moshi to be able to parse it.
*/
data class NutritionalInfoNet(
@JvmField
var id: String,
@JvmField
@premnirmal
premnirmal / NutritionalInfoNet.kt
Last active April 23, 2018 16:13
NutritionalInfo missing annotation
import com.squareup.moshi.Json
/**
* Class representing a recipe's nutritional information.
* The [calories_per_serving] field does not include the correct annotation for Moshi to be able to parse it.
*/
data class NutritionalInfoNet(
@JvmField
var id: String,
@JvmField
@premnirmal
premnirmal / .screenrc
Created April 18, 2017 15:51
my .screenrc
escape ^\\\
@premnirmal
premnirmal / XORCrypt.java
Created September 26, 2014 02:03
Simple yet effective XOR encryption
import java.io.*;
import java.util.*;
/**
* @author Prem Nirmal
*/
public class XORCrypt {
static String value = "SampleStringToBeEncrypted";
static String keyval = "thisIsAKey";
@premnirmal
premnirmal / GZipRequest.java
Last active December 20, 2022 06:07
Parse GZip responses using volley
import com.android.volley.NetworkResponse;
import com.android.volley.ParseError;
import com.android.volley.Response;
import com.android.volley.toolbox.HttpHeaderParser;
import com.android.volley.toolbox.StringRequest;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStreamReader;