Advertisement
Guest User

Untitled

a guest
Oct 15th, 2019
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.64 KB | None | 0 0
  1. package com.yusriyusron.favoriteapp.view;
  2.  
  3. import android.content.Context;
  4. import android.database.ContentObserver;
  5. import android.database.Cursor;
  6. import android.os.AsyncTask;
  7. import android.os.Bundle;
  8. import android.os.Handler;
  9. import android.os.HandlerThread;
  10. import android.view.View;
  11. import android.widget.ProgressBar;
  12. import android.widget.TextView;
  13.  
  14. import androidx.appcompat.app.AppCompatActivity;
  15. import androidx.recyclerview.widget.LinearLayoutManager;
  16. import androidx.recyclerview.widget.RecyclerView;
  17.  
  18. import com.yusriyusron.favoriteapp.R;
  19. import com.yusriyusron.favoriteapp.controller.FavoriteAdapter;
  20. import com.yusriyusron.favoriteapp.model.Movie;
  21. import com.yusriyusron.favoriteapp.model.database.DbHelper;
  22. import com.yusriyusron.favoriteapp.utils.MappingHelper;
  23.  
  24. import java.lang.ref.WeakReference;
  25. import java.util.ArrayList;
  26.  
  27. public class MainActivity extends AppCompatActivity implements LoadMovieCallback{
  28.  
  29. public static final String TAG_ID = "id";
  30. public static final String TAG_POSTER = "poster";
  31. public static final String TAG_TITLE = "title";
  32. public static final String TAG_OVERVIEW = "overview";
  33.  
  34. private static final String EXTRA_STATE = "EXTRA_STATE";
  35.  
  36. private RecyclerView recyclerView;
  37. private ProgressBar progressBar;
  38. private TextView textViewNotAvailable;
  39.  
  40. private FavoriteAdapter adapter;
  41.  
  42. @Override
  43. protected void onCreate(Bundle savedInstanceState) {
  44. super.onCreate(savedInstanceState);
  45. setContentView(R.layout.activity_main);
  46.  
  47. recyclerView = findViewById(R.id.recycler_view);
  48. textViewNotAvailable = findViewById(R.id.text_view_not_available);
  49. progressBar = findViewById(R.id.progress_bar);
  50. adapter = new FavoriteAdapter(this);
  51.  
  52. HandlerThread handlerThread = new HandlerThread("Data Observer");
  53. handlerThread.start();
  54. Handler handler = new Handler(handlerThread.getLooper());
  55. DataObserver dataObserver = new DataObserver(handler, this);
  56. getContentResolver().registerContentObserver(DbHelper.CONTENT_URI, true, dataObserver);
  57.  
  58. if (savedInstanceState == null) {
  59. new LoadMovieAsync(this, this).execute();
  60. } else {
  61. progressBar.setVisibility(View.GONE);
  62. ArrayList<Movie> list = savedInstanceState.getParcelableArrayList(EXTRA_STATE);
  63. if (list != null) {
  64. adapter.setListMovie(list);
  65. }
  66. }
  67. }
  68.  
  69. @Override
  70. public void postExecute(Cursor cursor) {
  71. ArrayList<Movie> listMovie = MappingHelper.mapCursorMovieToArrayList(cursor);
  72. if (listMovie != null) {
  73. if (listMovie.size() > 0) {
  74. adapter.setListMovie(listMovie);
  75. textViewNotAvailable.setVisibility(View.VISIBLE);
  76. progressBar.setVisibility(View.GONE);
  77. recyclerView.setAdapter(adapter);
  78. recyclerView.setLayoutManager(new LinearLayoutManager(this));
  79. textViewNotAvailable.setText(adapter.getListMovie().get(0).getTitleMovie());
  80. } else {
  81. textViewNotAvailable.setVisibility(View.VISIBLE);
  82. progressBar.setVisibility(View.GONE);
  83. }
  84. } else {
  85. textViewNotAvailable.setVisibility(View.VISIBLE);
  86. progressBar.setVisibility(View.GONE);
  87. }
  88. }
  89.  
  90. private static class LoadMovieAsync extends AsyncTask<Void, Void, Cursor> {
  91.  
  92. private final WeakReference<Context> weakContext;
  93. private final WeakReference<LoadMovieCallback> weakCallback;
  94.  
  95. private LoadMovieAsync(Context context, LoadMovieCallback callback) {
  96. weakContext = new WeakReference<>(context);
  97. weakCallback = new WeakReference<>(callback);
  98. }
  99.  
  100. @Override
  101. protected Cursor doInBackground(Void... voids) {
  102. Context context = weakContext.get();
  103. return context.getContentResolver().query(DbHelper.CONTENT_URI, null, null, null, null);
  104. }
  105.  
  106. @Override
  107. protected void onPostExecute(Cursor cursor) {
  108. super.onPostExecute(cursor);
  109. weakCallback.get().postExecute(cursor);
  110. }
  111. }
  112.  
  113. public static class DataObserver extends ContentObserver {
  114. final Context context;
  115.  
  116. DataObserver(Handler handler, Context context) {
  117. super(handler);
  118. this.context = context;
  119. }
  120.  
  121. @Override
  122. public void onChange(boolean selfChange) {
  123. super.onChange(selfChange);
  124. }
  125. }
  126. }
  127.  
  128. interface LoadMovieCallback {
  129. void postExecute(Cursor cursor);
  130. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement