/* * Copyright (C) 2016 Simon Vig Therkildsen * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.simonvt.cathode.ui.dashboard; import android.content.Context; import android.database.Cursor; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import butterknife.BindView; import butterknife.ButterKnife; import javax.inject.Inject; import net.simonvt.cathode.CathodeApp; import net.simonvt.cathode.R; import net.simonvt.cathode.images.ImageUri; import net.simonvt.cathode.provider.DatabaseContract.MovieColumns; import net.simonvt.cathode.provider.DatabaseSchematic; import net.simonvt.cathode.scheduler.MovieTaskScheduler; import net.simonvt.cathode.images.ImageType; import net.simonvt.cathode.ui.adapter.RecyclerCursorAdapter; import net.simonvt.cathode.widget.RemoteImageView; import net.simonvt.schematic.Cursors; public class DashboardMoviesAdapter extends RecyclerCursorAdapter<DashboardMoviesAdapter.ViewHolder> { public static final String[] PROJECTION = new String[] { DatabaseSchematic.Tables.MOVIES + "." + MovieColumns.ID, DatabaseSchematic.Tables.MOVIES + "." + MovieColumns.TITLE, DatabaseSchematic.Tables.MOVIES + "." + MovieColumns.OVERVIEW, DatabaseSchematic.Tables.MOVIES + "." + MovieColumns.LAST_MODIFIED, }; @Inject MovieTaskScheduler movieScheduler; private DashboardFragment.OverviewCallback callback; public DashboardMoviesAdapter(Context context, DashboardFragment.OverviewCallback callback) { super(context); this.callback = callback; CathodeApp.inject(context, this); } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { final View view = LayoutInflater.from(parent.getContext()) .inflate(R.layout.list_row_dashboard_movie, parent, false); final ViewHolder holder = new ViewHolder(view); view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final int position = holder.getAdapterPosition(); if (position != RecyclerView.NO_POSITION) { Cursor cursor = getCursor(position); final String title = Cursors.getString(cursor, MovieColumns.TITLE); final String overview = Cursors.getString(cursor, MovieColumns.OVERVIEW); callback.onDisplayMovie(holder.getItemId(), title, overview); } } }); return holder; } @Override protected void onBindViewHolder(ViewHolder holder, Cursor cursor, int position) { final long id = Cursors.getLong(cursor, MovieColumns.ID); final String poster = ImageUri.create(ImageUri.ITEM_MOVIE, ImageType.POSTER, id); holder.poster.setImage(poster); holder.title.setText(Cursors.getString(cursor, MovieColumns.TITLE)); } static class ViewHolder extends RecyclerView.ViewHolder { @BindView(R.id.poster) RemoteImageView poster; @BindView(R.id.title) TextView title; public ViewHolder(View itemView) { super(itemView); ButterKnife.bind(this, itemView); } } }