Skip to content

Instantly share code, notes, and snippets.

View Sinarahimi's full-sized avatar
🏠
Working from home

Sina Rahimi Sinarahimi

🏠
Working from home
View GitHub Profile
@Sinarahimi
Sinarahimi / dependencies.java
Last active February 10, 2018 13:08
dependencies
dependencies {
...
implementation 'com.squareup.okhttp3:logging-interceptor:3.9.1'
retrofit2()
rx()
lifeCycle()
@Sinarahimi
Sinarahimi / Movie.java
Last active February 13, 2018 08:42
Movie
@Entity
public class Movie {
@PrimaryKey
@NonNull
private String imdbID;
@SerializedName("Title")
private String title;
public class SearchResult {
@SerializedName("Search")
private ArrayList<Movie> search;
private int totalResults;
@SerializedName("Response")
private boolean response;
...
@Database(entities = Movie.class, version = 1, exportSchema = false)
public abstract class AppDatabase extends RoomDatabase {
public static final String DATABASE_DB = "database.db";
private static AppDatabase appDatabase;
public static AppDatabase getInstance(Context context) {
if (appDatabase == null) {
appDatabase = Room.databaseBuilder(context, AppDatabase.class, DATABASE_DB).allowMainThreadQueries().build();
}
public class MovieDatabaseHelper extends BaseDatabaseHelper {
private MovieDao movieDao;
public MovieDatabaseHelper(Context context) {
super(context);
movieDao = appDatabase.getMovieDao();
}
public LiveData<List<Movie>> getAll() {
public interface MovieApi {
@GET("/?s=Batman&page=1&apikey=96099fe3")
Single<Response<SearchResult>> getMovieList();
}
public class MovieRepository extends BaseRepository {
private MovieApi movieApi;
private MovieDatabaseHelper movieDatabaseHelper;
public MovieRepository(Context context) {
movieApi = getRetrofitHelper().getService(MovieApi.class);
movieDatabaseHelper = new MovieDatabaseHelper(context);
}
class HomeViewModel extends AndroidViewModel {
private MovieRepository movieRepository;
HomeViewModel(@NonNull Application application) {
super(application);
movieRepository = new MovieRepository(application.getApplicationContext());
}
LiveData<List<Movie>> getMovies() {
...
HomeViewModel homeViewModel = ViewModelProviders.of(this).get(HomeViewModel.class);
homeViewModel.getMovies().observe(HomeActivity.this, movieList -> {
if (movieList != null) {
ArrayList<Movie> movieArrayList = new ArrayList<>(movieList);
homeAdapter = new HomeAdapter(HomeActivity.this, movieArrayList);
InfiniteScrollAdapter wrapper = InfiniteScrollAdapter.wrap(homeAdapter);
discreteScrollView.setAdapter(wrapper);
@Dao
public interface MovieDao extends BaseDao<Movie> {
@Query("select * from Movie")
LiveData<List<Movie>> getAll();
}