Guest User

Untitled

a guest
May 23rd, 2018
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.21 KB | None | 0 0
  1. public class FavouritesFragment extends Fragment implements FavouritesAdapter.ItemClickListener {
  2. RecyclerView recyclerView;
  3. View view;
  4. Toolbar toolbar;
  5. ArrayList<FavouriteModel> favouritesList;
  6. FavouritesAdapter favouritesAdapter;
  7.  
  8. /**
  9. * DB
  10. */
  11. private SQLiteDatabase mDb;
  12. FavouritesDbHelper favouritesDbHelper;
  13.  
  14.  
  15. public FavouritesFragment() {
  16. // Required empty public constructor
  17. }
  18.  
  19.  
  20. @Override
  21. public View onCreateView(LayoutInflater inflater, ViewGroup container,
  22. Bundle savedInstanceState) {
  23. view = inflater.inflate(R.layout.fragment_favourites, container, false);
  24. toolbar = (Toolbar) view.findViewById(R.id.main_toolbar);
  25. ((AppCompatActivity) getActivity()).setSupportActionBar(toolbar);
  26.  
  27. /**
  28. * DB
  29. */
  30. favouritesDbHelper = new FavouritesDbHelper(getActivity());
  31. mDb = favouritesDbHelper.getWritableDatabase();
  32. Cursor cursor = getFavouriteCursor();
  33. Log.d("tag", "---Number of rows--- " + cursor.getCount());
  34.  
  35. favouritesList = new ArrayList<>();
  36. favouritesAdapter = new FavouritesAdapter(getActivity(), cursor, setOnItemClickCallback());
  37. recyclerView = view.findViewById(R.id.recycler_favourites);
  38. recyclerView.setLayoutManager(new GridLayoutManager(getActivity(), 2));
  39. recyclerView.setAdapter(favouritesAdapter);
  40. return view;
  41. }
  42.  
  43. /**
  44. * DB
  45. */
  46. private Cursor getFavouriteCursor(){
  47. return mDb.query(
  48. Contract.TableInfo.TABLE_NAME,
  49. null,
  50. null,
  51. null,
  52. null,
  53. null,
  54. null
  55. );
  56. }
  57.  
  58. private OnItemClickListener.OnItemClickCallback setOnItemClickCallback() {
  59. OnItemClickListener.OnItemClickCallback onItemClickCallback = new OnItemClickListener.OnItemClickCallback() {
  60. @Override
  61. public void onItemClicked(View view, int position) {
  62. Log.d("click", "Fav - onItemClicked realisation " + position);
  63.  
  64. FavouriteModel itemClicked = favouritesList.get(position);
  65. Log.d("click", "Fav - FavouriteModel itemClicked " + itemClicked.toString());
  66.  
  67. Bundle bundle = new Bundle();
  68. bundle.putString("title", itemClicked.getTitle());
  69. Log.d("click", "Fav - title, itemClicked.getTitle() " + itemClicked.getTitle());
  70.  
  71. bundle.putString("overview", itemClicked.getOverview());
  72. bundle.putString("release_date", itemClicked.getRelease_date());
  73. bundle.putString("vote_average", itemClicked.getVote_average().toString());
  74. bundle.putString("poster_path", itemClicked.getPoster_path());
  75. bundle.putString("id", itemClicked.getId().toString());
  76.  
  77. DetailedFragment detailedFragment = new DetailedFragment();
  78. detailedFragment.setArguments(bundle);
  79.  
  80. FragmentManager manager = getActivity().getSupportFragmentManager();
  81. FragmentTransaction transaction = manager.beginTransaction();
  82. transaction.addToBackStack(null);
  83. transaction.replace(R.id.main_frame_list, detailedFragment);
  84. transaction.commit();
  85. }
  86.  
  87. };
  88. return onItemClickCallback;
  89. }
  90.  
  91. @Override
  92. public void onItemClick(View view, int position) {
  93. Log.d("click", "Fav - in Fragment some onItemClick method for what???");
  94. }
  95. }
  96.  
  97. public class FavouritesAdapter extends RecyclerView.Adapter<FavouritesAdapter.FavouritesViewHolder> {
  98.  
  99. private ItemClickListener mClickListener;
  100. OnItemClickListener.OnItemClickCallback onItemClickCallback;
  101.  
  102. Cursor mCursor;
  103. private Context mContext;
  104.  
  105. public FavouritesAdapter(Context context, Cursor cursor,
  106. OnItemClickListener.OnItemClickCallback onItemClickCallback) {
  107. this.mCursor = cursor;
  108. this.onItemClickCallback = onItemClickCallback;
  109. this.mContext = context;
  110. }
  111.  
  112. @NonNull
  113. @Override
  114. public FavouritesViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
  115. View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_banner, parent, false);
  116. return new FavouritesViewHolder(view);
  117. }
  118.  
  119. @Override
  120. public void onBindViewHolder(@NonNull FavouritesViewHolder holder, int position) {
  121. if(mCursor.moveToPosition(position)){
  122. String path = mCursor.getString(mCursor.getColumnIndex(Contract.TableInfo.COLUMN_POSTER_PATH));
  123. Log.d("tag", "------> Poster path is " + path);
  124. Picasso.get()
  125. .load(path)
  126. .into(holder.mImageBanner);
  127. }
  128.  
  129. holder.mImageBanner.setOnClickListener(new OnItemClickListener(position, onItemClickCallback));
  130. }
  131.  
  132. @Override
  133. public int getItemCount() {
  134. return mCursor.getCount();
  135. }
  136.  
  137. public class FavouritesViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
  138. ImageView mImageBanner;
  139.  
  140. public FavouritesViewHolder(View itemView) {
  141. super(itemView);
  142. mImageBanner = (ImageView) itemView.findViewById(R.id.item_banner_image);
  143. itemView.setOnClickListener(this);
  144. }
  145.  
  146. @Override
  147. public void onClick(View v) {
  148.  
  149. }
  150. }
  151.  
  152. public void setClickListener(FavouritesAdapter.ItemClickListener itemClickListener) {
  153. this.mClickListener = itemClickListener;
  154. }
  155.  
  156. public interface ItemClickListener {
  157. void onItemClick(View view, int position);
  158. }
  159. }
  160.  
  161. public class OnItemClickListener implements View.OnClickListener {
  162. private int position;
  163. private OnItemClickCallback onItemClickCallback;
  164.  
  165. public OnItemClickListener(int position, OnItemClickCallback onItemClickCallback) {
  166. this.position = position;
  167. this.onItemClickCallback = onItemClickCallback;
  168. }
  169.  
  170. @Override
  171. public void onClick(View view) {
  172. onItemClickCallback.onItemClicked(view, position);
  173. }
  174.  
  175. public interface OnItemClickCallback {
  176. void onItemClicked(View view, int position);
  177. }
  178.  
  179. E/AndroidRuntime: FATAL EXCEPTION: main
  180. Process: com.borisruzanov.popularmovies, PID: 11139
  181. java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
  182. at java.util.ArrayList.get(ArrayList.java:411)
  183. at com.borisruzanov.popularmovies.FavouritesFragment$1.onItemClicked(FavouritesFragment.java:106)
  184. at com.borisruzanov.popularmovies.OnItemClickListener.onClick(OnItemClickListener.java:16)
  185. at android.view.View.performClick(View.java:5610)
  186. at android.view.View$PerformClick.run(View.java:22265)
  187. at android.os.Handler.handleCallback(Handler.java:751)
  188. at android.os.Handler.dispatchMessage(Handler.java:95)
  189. at android.os.Looper.loop(Looper.java:154)
  190. at android.app.ActivityThread.main(ActivityThread.java:6077)
  191. at java.lang.reflect.Method.invoke(Native Method)
  192. at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
  193. at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
Add Comment
Please, Sign In to add comment