Skip to content

Instantly share code, notes, and snippets.

View sharmadhiraj's full-sized avatar

Dhiraj Sharma sharmadhiraj

View GitHub Profile
@sharmadhiraj
sharmadhiraj / EnglishNumberToNepaliNumber.java
Last active February 15, 2017 12:17
Change English number to Nepali number(Unicode) using android/java
public class EnglishNumberToNepaliNumber extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int x = 4545645;
String xInNepali = Util.convertEnglishNumberToNepali(x);
Log.d("xInNepali",x+" : "+xInNepali);
@sharmadhiraj
sharmadhiraj / build.gradle
Last active July 30, 2019 09:44
Android Paging Library
//Kotlin
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
//Support
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'com.google.android.material:material:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation 'androidx.cardview:cardview:1.0.0'
//Architecture Components
@sharmadhiraj
sharmadhiraj / Response.kt
Last active August 2, 2018 12:08
Android Paging LIbrary
data class Response(
@SerializedName("articles") val news: List<News>
)
data class News(
val title: String,
@SerializedName("urlToImage") val image: String
)
@sharmadhiraj
sharmadhiraj / NetworkService.kt
Last active November 20, 2018 09:23
Android Paging Library
interface NetworkService {
@GET("/everything?q=sports&apiKey=aa67d8d98c8e4ad1b4f16dbd5f3be348")
fun getNews(@Query("page") page: Int, @Query("pageSize") pageSize: Int): Single<Response>
companion object {
fun getService(): NetworkService {
val retrofit = Retrofit.Builder()
.baseUrl("https://newsapi.org/v2/")
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
@sharmadhiraj
sharmadhiraj / State.kt
Created August 2, 2018 12:32
Android Paging Library
enum class State {
DONE, LOADING, ERROR
}
@sharmadhiraj
sharmadhiraj / NewsDataSource.kt
Created August 3, 2018 06:53
Android Paging Library
class NewsDataSource(
private val networkService: NetworkService,
private val compositeDisposable: CompositeDisposable)
: PageKeyedDataSource<Int, News>() {
var state: MutableLiveData<State> = MutableLiveData()
private var retryCompletable: Completable? = null
override fun loadInitial(params: LoadInitialParams<Int>, callback: LoadInitialCallback<Int, News>) {
@sharmadhiraj
sharmadhiraj / NewsDataSourceFactory.kt
Created August 3, 2018 06:58
Android Paging Library
class NewsDataSourceFactory(
private val compositeDisposable: CompositeDisposable,
private val networkService: NetworkService)
: DataSource.Factory<Int, News>() {
val newsDataSourceLiveData = MutableLiveData<NewsDataSource>()
override fun create(): DataSource<Int, News> {
val newsDataSource = NewsDataSource(networkService, compositeDisposable)
newsDataSourceLiveData.postValue(newsDataSource)
@sharmadhiraj
sharmadhiraj / NewsListViewModel.kt
Created August 3, 2018 07:17
Android Paging Library
class NewsListViewModel : ViewModel() {
private val networkService = NetworkService.getService()
var newsList: LiveData<PagedList<News>>
private val compositeDisposable = CompositeDisposable()
private val pageSize = 5
private val newsDataSourceFactory: NewsDataSourceFactory
init {
newsDataSourceFactory = NewsDataSourceFactory(compositeDisposable, networkService)
@sharmadhiraj
sharmadhiraj / activity_news_list.xml
Last active August 3, 2018 07:45
Android Paging Library
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ProgressBar
android:id="@+id/progress_bar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@sharmadhiraj
sharmadhiraj / ListFooterViewHolder.kt
Created August 3, 2018 07:29
Android Paging Library
class ListFooterViewHolder(view: View) : RecyclerView.ViewHolder(view) {
fun bind(status: State?) {
itemView.progress_bar.visibility = if (status == State.LOADING) VISIBLE else View.INVISIBLE
itemView.txt_error.visibility = if (status == State.ERROR) VISIBLE else View.INVISIBLE
}
companion object {
fun create(retry: () -> Unit, parent: ViewGroup): ListFooterViewHolder {
val view = LayoutInflater.from(parent.context)