Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class FavouritesFragment extends Fragment implements FavouritesAdapter.ItemClickListener {
- RecyclerView recyclerView;
- View view;
- Toolbar toolbar;
- ArrayList<FavouriteModel> favouritesList;
- FavouritesAdapter favouritesAdapter;
- /**
- * DB
- */
- private SQLiteDatabase mDb;
- FavouritesDbHelper favouritesDbHelper;
- public FavouritesFragment() {
- // Required empty public constructor
- }
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- view = inflater.inflate(R.layout.fragment_favourites, container, false);
- toolbar = (Toolbar) view.findViewById(R.id.main_toolbar);
- ((AppCompatActivity) getActivity()).setSupportActionBar(toolbar);
- /**
- * DB
- */
- favouritesDbHelper = new FavouritesDbHelper(getActivity());
- mDb = favouritesDbHelper.getWritableDatabase();
- Cursor cursor = getFavouriteCursor();
- Log.d("tag", "---Number of rows--- " + cursor.getCount());
- favouritesList = new ArrayList<>();
- favouritesAdapter = new FavouritesAdapter(getActivity(), cursor, setOnItemClickCallback());
- recyclerView = view.findViewById(R.id.recycler_favourites);
- recyclerView.setLayoutManager(new GridLayoutManager(getActivity(), 2));
- recyclerView.setAdapter(favouritesAdapter);
- return view;
- }
- /**
- * DB
- */
- private Cursor getFavouriteCursor(){
- return mDb.query(
- Contract.TableInfo.TABLE_NAME,
- null,
- null,
- null,
- null,
- null,
- null
- );
- }
- private OnItemClickListener.OnItemClickCallback setOnItemClickCallback() {
- OnItemClickListener.OnItemClickCallback onItemClickCallback = new OnItemClickListener.OnItemClickCallback() {
- @Override
- public void onItemClicked(View view, int position) {
- Log.d("click", "Fav - onItemClicked realisation " + position);
- FavouriteModel itemClicked = favouritesList.get(position);
- Log.d("click", "Fav - FavouriteModel itemClicked " + itemClicked.toString());
- Bundle bundle = new Bundle();
- bundle.putString("title", itemClicked.getTitle());
- Log.d("click", "Fav - title, itemClicked.getTitle() " + itemClicked.getTitle());
- bundle.putString("overview", itemClicked.getOverview());
- bundle.putString("release_date", itemClicked.getRelease_date());
- bundle.putString("vote_average", itemClicked.getVote_average().toString());
- bundle.putString("poster_path", itemClicked.getPoster_path());
- bundle.putString("id", itemClicked.getId().toString());
- DetailedFragment detailedFragment = new DetailedFragment();
- detailedFragment.setArguments(bundle);
- FragmentManager manager = getActivity().getSupportFragmentManager();
- FragmentTransaction transaction = manager.beginTransaction();
- transaction.addToBackStack(null);
- transaction.replace(R.id.main_frame_list, detailedFragment);
- transaction.commit();
- }
- };
- return onItemClickCallback;
- }
- @Override
- public void onItemClick(View view, int position) {
- Log.d("click", "Fav - in Fragment some onItemClick method for what???");
- }
- }
- public class FavouritesAdapter extends RecyclerView.Adapter<FavouritesAdapter.FavouritesViewHolder> {
- private ItemClickListener mClickListener;
- OnItemClickListener.OnItemClickCallback onItemClickCallback;
- Cursor mCursor;
- private Context mContext;
- public FavouritesAdapter(Context context, Cursor cursor,
- OnItemClickListener.OnItemClickCallback onItemClickCallback) {
- this.mCursor = cursor;
- this.onItemClickCallback = onItemClickCallback;
- this.mContext = context;
- }
- @NonNull
- @Override
- public FavouritesViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_banner, parent, false);
- return new FavouritesViewHolder(view);
- }
- @Override
- public void onBindViewHolder(@NonNull FavouritesViewHolder holder, int position) {
- if(mCursor.moveToPosition(position)){
- String path = mCursor.getString(mCursor.getColumnIndex(Contract.TableInfo.COLUMN_POSTER_PATH));
- Log.d("tag", "------> Poster path is " + path);
- Picasso.get()
- .load(path)
- .into(holder.mImageBanner);
- }
- holder.mImageBanner.setOnClickListener(new OnItemClickListener(position, onItemClickCallback));
- }
- @Override
- public int getItemCount() {
- return mCursor.getCount();
- }
- public class FavouritesViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
- ImageView mImageBanner;
- public FavouritesViewHolder(View itemView) {
- super(itemView);
- mImageBanner = (ImageView) itemView.findViewById(R.id.item_banner_image);
- itemView.setOnClickListener(this);
- }
- @Override
- public void onClick(View v) {
- }
- }
- public void setClickListener(FavouritesAdapter.ItemClickListener itemClickListener) {
- this.mClickListener = itemClickListener;
- }
- public interface ItemClickListener {
- void onItemClick(View view, int position);
- }
- }
- public class OnItemClickListener implements View.OnClickListener {
- private int position;
- private OnItemClickCallback onItemClickCallback;
- public OnItemClickListener(int position, OnItemClickCallback onItemClickCallback) {
- this.position = position;
- this.onItemClickCallback = onItemClickCallback;
- }
- @Override
- public void onClick(View view) {
- onItemClickCallback.onItemClicked(view, position);
- }
- public interface OnItemClickCallback {
- void onItemClicked(View view, int position);
- }
- E/AndroidRuntime: FATAL EXCEPTION: main
- Process: com.borisruzanov.popularmovies, PID: 11139
- java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
- at java.util.ArrayList.get(ArrayList.java:411)
- at com.borisruzanov.popularmovies.FavouritesFragment$1.onItemClicked(FavouritesFragment.java:106)
- at com.borisruzanov.popularmovies.OnItemClickListener.onClick(OnItemClickListener.java:16)
- at android.view.View.performClick(View.java:5610)
- at android.view.View$PerformClick.run(View.java:22265)
- at android.os.Handler.handleCallback(Handler.java:751)
- at android.os.Handler.dispatchMessage(Handler.java:95)
- at android.os.Looper.loop(Looper.java:154)
- at android.app.ActivityThread.main(ActivityThread.java:6077)
- at java.lang.reflect.Method.invoke(Native Method)
- at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
- at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
Add Comment
Please, Sign In to add comment