Skip to content

Instantly share code, notes, and snippets.

View brainail's full-sized avatar
🦊
What Does The Fox Say?

Yegor brainail

🦊
What Does The Fox Say?
View GitHub Profile
@brainail
brainail / KitsuLimitOffsetNetworkDataSource.kt
Created September 17, 2017 12:39
Base datasource for Kitsu items
abstract class KitsuLimitOffsetNetworkDataSource<T> protected constructor(
val dataProvider: KitsuRestApi) : TiledDataSource<T>() {
var queryFilter: String = ""
override fun countItems(): Int = DataSource.COUNT_UNDEFINED
protected abstract fun convertToItems(items: KitsuResponse, size: Int): List<T>
override fun loadRange(startPosition: Int, loadCount: Int): List<T>? {
@brainail
brainail / KitsuData.kt
Created September 17, 2017 12:36
Kitsu Data to fetch it using Retrofit
class KitsuResponse(
val data: List<KitsuItem>)
data class KitsuItem(
val id: Int,
val type: String?,
val attributes: KitsuItemAttributes?)
data class KitsuItemAttributes(
val synopsis: String?,
@brainail
brainail / KitsuMediaPagedListProvider.kt
Created September 17, 2017 12:11
Provider for PagedList with Kitsu items
object KitsuMediaPagedListProvider {
private val dataSource = object: KitsuLimitOffsetNetworkDataSource<KitsuItem>(KitsuRestApi) {
override fun convertToItems(items: KitsuResponse, size: Int): List<KitsuItem> {
return List(size, { index ->
items.data.elementAtOrElse(index, { KitsuItem(0, null, null) })
})
}
}
fun allKitsu(): LivePagedListProvider<Int, KitsuItem> {
@brainail
brainail / KitsuViewModel.kt
Created September 17, 2017 11:59
Our ViewModel for Kitsu Screen
class KitsuViewModel(app: Application) : AndroidViewModel(app) {
private var allKitsuLiveData: LiveData<PagedList<KitsuItem>>? = null
val allKitsu: LiveData<PagedList<KitsuItem>>
get() {
if (null == allKitsuLiveData) {
allKitsuLiveData = KitsuMediaPagedListProvider.allKitsu().create(0,
PagedList.Config.Builder()
.setPageSize(PAGED_LIST_PAGE_SIZE)
.setInitialLoadSizeHint(PAGED_LIST_PAGE_SIZE)
.setEnablePlaceholders(PAGED_LIST_ENABLE_PLACEHOLDERS)
@brainail
brainail / KitsuMainActivity.kt
Last active September 17, 2017 11:44
The main activity where we display our list
class KitsuMainActivity : AppCompatActivity() {
private val viewModel by lazy { ViewModelProviders.of(this).get(KitsuViewModel::class.java) }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
initFlysearch(savedInstanceState)
searchForResults("Android")
}
@brainail
brainail / DashboardWithSquaredCells.java
Created January 23, 2017 12:43
DashboardWithSquaredCells
import android.content.Context;
import android.content.res.TypedArray;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
public class DashboardWithSquaredCells extends ViewGroup {
@brainail
brainail / Treap.cpp
Created April 25, 2016 14:13
Treap (Implicit keys)
// INCLUDES
// #define __INCLUDE_MANUAL
#ifndef __INCLUDE_MANUAL
#include <functional>
#include <algorithm>
#include <utility>
#include <cassert>
#include <cmath>
#include <ctime>
#include <numeric>
@brainail
brainail / GroovyAsPlanEnglishText.groovy
Created April 23, 2016 09:25
Groovy as english text
class Coffee {
def coffee = 0
def sugar = 0
def milk = 0
def liquor = 0
def with(sugar, milk) {
this.sugar = sugar
this.milk = milk
this
<!-- Declaring an App is only for handsets -->
<compatible-screens>
<screen android:screenSize="small" android:screenDensity="mdpi"/>
<screen android:screenSize="small" android:screenDensity="hdpi"/>
<screen android:screenSize="small" android:screenDensity="xhdpi"/>
<screen android:screenSize="small" android:screenDensity="420"/>
<screen android:screenSize="small" android:screenDensity="480"/>
<screen android:screenSize="small" android:screenDensity="560"/>
<screen android:screenSize="small" android:screenDensity="640"/>