Skip to content

Instantly share code, notes, and snippets.

View mikkipastel's full-sized avatar

Monthira Chayabanjonglerd mikkipastel

View GitHub Profile
@mikkipastel
mikkipastel / .gitlab-ci.yml
Last active September 8, 2017 08:29
ci file is gitlab for android studio beta application test in fabric
image: openjdk:8-jdk
variables:
ANDROID_COMPILE_SDK: "25"
ANDROID_BUILD_TOOLS: "25.0.2"
ANDROID_SDK_TOOLS: "25.2.5"
before_script:
# installing packages
- apt-get --quiet update --yes
@mikkipastel
mikkipastel / Fragment_step5.java
Created September 26, 2017 04:30
Android Architecture Component; share ViewModel with Fragment ref. at https://codelabs.developers.google.com/codelabs/android-lifecycles/#5
/*
* Copyright 2017, The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
@mikkipastel
mikkipastel / UserDao.java
Created September 26, 2017 07:40
paging library with Room in Android Architecture Component
@Dao
interface UserDao {
@Query("SELECT * FROM user ORDER BY lastName ASC")
public abstract LivePagedListProvider<Integer, User> usersByLastName();
}
@mikkipastel
mikkipastel / MyViewModel.java
Created September 26, 2017 07:41
paging library with Room in Android Architecture Component
class MyViewModel extends ViewModel {
public final LiveData<PagedList<User>> usersList;
public MyViewModel(UserDao userDao) {
usersList = userDao.usersByLastName().create(
/* initial load position */ 0,
new PagedList.Config.Builder()
.setPageSize(50)
.setPrefetchDistance(50)
.build());
}
@mikkipastel
mikkipastel / MyActivity.java
Created September 26, 2017 07:41
paging library with Room in Android Architecture Component
class MyActivity extends AppCompatActivity {
@Override
public void onCreate(Bundle savedState) {
super.onCreate(savedState);
MyViewModel viewModel = ViewModelProviders.of(this).get(MyViewModel.class);
RecyclerView recyclerView = findViewById(R.id.user_list);
UserAdapter<User> adapter = new UserAdapter();
viewModel.usersList.observe(this, pagedList -> adapter.setList(pagedList));
recyclerView.setAdapter(adapter);
}
@mikkipastel
mikkipastel / UserAdapter.java
Created September 26, 2017 07:42
paging library with Room in Android Architecture Component
class UserAdapter extends PagedListAdapter<User, UserViewHolder> {
public UserAdapter() {
super(DIFF_CALLBACK);
}
@Override
public void onBindViewHolder(UserViewHolder holder, int position) {
User user = getItem(position);
if (user != null) {
holder.bindTo(user);
} else {
public class UserRepository {
private Webservice webservice;
// ...
public LiveData<User> getUser(int userId) {
// This is not an optimal implementation, we'll fix it below
final MutableLiveData<User> data = new MutableLiveData<>();
webservice.getUser(userId).enqueue(new Callback<User>() {
@Override
public void onResponse(Call<User> call, Response<User> response) {
// error case is left out for brevity
public interface Webservice {
@GET("/users/{user}")
Call<User> getUser(@Path("user") String userId);
}
@mikkipastel
mikkipastel / build.gradle
Last active September 28, 2017 04:35
build.gradle of project for instant apps
buildscript {
project.ext.compileSdkVersion = 26
project.ext.buildToolsVersion = "26.0.1"
repositories {
jcenter()
google()
}
dependencies {
@mikkipastel
mikkipastel / build.gradle
Created September 28, 2017 06:35
build.gradle of feature module for instant app
apply plugin: 'com.android.feature'
android {
buildToolsVersion '26.0.0'
compileSdkVersion 26
dataBinding {
enabled = true
}