Skip to content

Instantly share code, notes, and snippets.


Subhrajyoti Sen SubhrajyotiSen

View GitHub Profile

Exploring GraphQL on Android


Traditionally most of us have been using REST for our APIs. Even though it has worked well till now, there are multiple pain points around it like too many endpoints, payload bloat, documentation effort etc. Then came GraphQL to save us developers. GraphQL is a query language for APIs.

In this talk, we explore the general pain points regarding REST and understand how GraphQL addresses them. We also go through the process of consuming GraphQL APIs on Android and common things to keep in mind. With Apollo for Android reaching v1.0 recently, now is the perfect time to explore GraphQL on Android.

Elevator pitch

As a mobile developer working with REST APIs, you must have at one point wished that you didn't have to hit different endpoints just for slightly different data. GraphQL was built to address this and many other pain points. Come learn about this new query language and how you can try it on Android.

View whyred_los.xml
<?xml version="1.0" encoding="UTF-8"?>
<project name="SubhrajyotiSen/private_whyred" path="device/xiaomi/whyred" remote="private" revision="audio" />
name= "SubhrajyotiSen/whyred"
path= "kernel/xiaomi/whyred"
remote="github" revision="pie" />
name= "LineageOS/android_packages_resources_devicesettings"
View sip_calculation
var amount = 100.0
val installment = 100.0
entryList.add(Entry(0f, 100f)) // initial investment
for (i in 1 until dataPoints.size) {
val diff = (dataPoints[i].price - dataPoints[i - 1].price) / dataPoints[i - 1].price
amount += (amount * diff)
if (i != dataPoints.size - 1)
amount += installment
entryList.add(Entry(i.toFloat(), amount.toFloat()))
View compcoding
using namespace std;
#define FOR(i,n,a) for(int i=a;i<=n;i++)
#define FORN(i,n,a) for(int i=a;i<n;i++)
typedef long long ll;
int main() {
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.RecyclerViewHolder> {
private List<BorrowModel> borrowModelList;
private View.OnLongClickListener longClickListener;
public RecyclerViewAdapter(List<BorrowModel> borrowModelList, View.OnLongClickListener longClickListener) {
this.borrowModelList = borrowModelList;
this.longClickListener = longClickListener;
public class MainActivity extends AppCompatActivity implements View.OnLongClickListener {
private BorrowedListViewModel viewModel;
private RecyclerViewAdapter recyclerViewAdapter;
private RecyclerView recyclerView;
protected void onCreate(Bundle savedInstanceState) {
public class BorrowedListViewModel extends AndroidViewModel {
private final LiveData<List<BorrowModel>> itemAndPersonList;
private AppDatabase appDatabase;
public BorrowedListViewModel(Application application) {
@Database(entities = {BorrowModel.class}, version = 1)
public abstract class AppDatabase extends RoomDatabase {
private static AppDatabase INSTANCE;
public static AppDatabase getDatabase(Context context) {
if (INSTANCE == null) {
Room.databaseBuilder(context.getApplicationContext(), AppDatabase.class, "borrow_db")
public interface BorrowModelDao {
@Query("select * from BorrowModel")
LiveData<List<BorrowModel>> getAllBorrowedItems();
@Query("select * from BorrowModel where id = :id")
BorrowModel getItembyId(String id);
import java.util.Date;
class DateConverter {
public static Date toDate(Long timestamp) {
return timestamp == null ? null : new Date(timestamp);
public static Long toTimestamp(Date date) {
You can’t perform that action at this time.