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 / 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 / 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 / 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)
@sharmadhiraj
sharmadhiraj / NewsListAdapter.kt
Created August 3, 2018 07:35
Android Paging Library
class NewsListAdapter(private val retry: () -> Unit)
: PagedListAdapter<News, RecyclerView.ViewHolder>(NewsDiffCallback) {
private val DATA_VIEW_TYPE = 1
private val FOOTER_VIEW_TYPE = 2
private var state = State.LOADING
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
return if (viewType == DATA_VIEW_TYPE) NewsViewHolder.create(parent) else ListFooterViewHolder.create(retry, parent)
@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 / base.dart
Created August 9, 2018 10:04
Base StatefulWidget
abstract class BaseStatefulWidget extends StatefulWidget {
String getTitle();
Widget body(AsyncSnapshot snapshot);
Future future();
@override
State<StatefulWidget> createState() => BaseState(getTitle());
}