Skip to content

Instantly share code, notes, and snippets.

@manoj-mili
manoj-mili / BaseApp.java
Created August 8, 2020 08:56
Initializing AndroidNetworking in your BaseApp class with logging if required
public class BaseApp extends Application {
@Override
public void onCreate() {
super.onCreate();
AndroidNetworking.initialize(getApplicationContext());
if (BuildConfig.DEBUG) {
//For logging api request and response
AndroidNetworking.enableLogging(HttpLoggingInterceptor.Level.BODY);
@manoj-mili
manoj-mili / GetRquestExample.java
Last active August 8, 2020 09:46
Get Request With Path Parameters Using Fast-Android-Networking
static final String URLEX = "https://jsonplaceholder.typicode.com/users/{user_id}/albums";
AndroidNetworking.get(URLEx).addPathParameter("user_id","1").build().getAsJSONArray(new JSONArrayRequestListener() {
@Override
public void onResponse(JSONArray response) {
// Once data is received it will available for processing
}
@Override
public void onError(ANError anError) {
public static final String URLEx = "https://jsonplaceholder.typicode.com/users/{user_id}/albums";
Rx2AndroidNetworking.get(URLEx).addPathParameter("user_id", "1").build().getJSONArraySingle().doOnSuccess(jsonArray -> {
//Handle once data is available
}).doOnError(throwable -> {
//Handle in case of Error
}).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe();
class User {
private String title;
private int id, userId;
}
//Mention the model class to which the data should be parsed if it is list or single just change
// the getType and same can be done for normal api requests
Rx2AndroidNetworking.get(URLEx).addPathParameter("user_id", "1").build().
getObjectListSingle(User.class).
doOnSuccess(jsonArray -> {
@manoj-mili
manoj-mili / PostAdapterGist.kt
Created August 9, 2020 19:04
Implementing Recyclerview Adapter with DiffCallBack
class PostAdapter :
ListAdapter<Post, PostAdapter.ViewHolder>(TaskDiffCallBack()) {
//This check runs on background thread
class TaskDiffCallBack : DiffUtil.ItemCallback<Post>() {
override fun areItemsTheSame(oldItem: Post, newItem: Post): Boolean {
Log.d(TAG,Thread.currentThread().name)
return oldItem.id == newItem.id;
}
@manoj-mili
manoj-mili / MainActivity.kt
Last active August 16, 2020 09:54
Initializing And Calling Our Adapter Class
package com.carnot.recyclerviewlistadapter
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
lateinit var adapter: PostAdapter
override fun onCreate(savedInstanceState: Bundle?) {
@manoj-mili
manoj-mili / Adapter.kt
Created August 16, 2020 14:56
BindViewHolder implementation
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
//to access data from list we have getItem(position) and no need to implement
val task = getItem(position)
holder.tvDesc.text = task.body
holder.tvTitle.text = task.title
}
//Also no need to implement getItemCount()
@manoj-mili
manoj-mili / FunctionHavingOnlyCodeBasedOnNaming.kt
Created November 8, 2021 18:33
Code in Function Based on Name
//Don't add validation in this function as the name of the function only suggest to add it to db
fun savePhoneNumber(phoneNumber: String) {
if (!phoneNumber.equals("") && phoneNumber.length == 10 && phoneNumber regex check and etc...) {
dao.saveNumber(phoneNumber)
}
}
//Do only pass numbers post validation
fun savePhoneNumber(phoneNumber: String) {
dao.saveNumber(phoneNumber)
@manoj-mili
manoj-mili / Arguments.kt
Created November 8, 2021 18:53
Avoid Passing Too many arguments
// Don't pass too many arguments
fun saveUserDetails(
firstName: String,
lastName: String,
phoneNumber: String,
gender: String,
age: Int
) {}
// Do create a type and pass it as function param
@manoj-mili
manoj-mili / ImageLoaderWrapper.kt
Created November 8, 2021 19:05
Use Wrappers Around Libraries
//Helper class which hides the library and exposes only required functionality
class ImageLoader {
fun setImageFromUrl(url: String, imageView: SomeViewHolder) {
// Do your Picasso or what ever library related stuff here
Picasso.get().load(url).into(imageView)
}
}
class SomeScreen {