Song.java revision 86163d539e1aeb9ae7612def7aaf7dbfc5b88f28
186163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn/* 286163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn * Copyright (C) 2015 The Android Open Source Project 386163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn * 486163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 586163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn * in compliance with the License. You may obtain a copy of the License at 686163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn * 786163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn * http://www.apache.org/licenses/LICENSE-2.0 886163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn * 986163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn * Unless required by applicable law or agreed to in writing, software distributed under the License 1086163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 1186163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn * or implied. See the License for the specific language governing permissions and limitations under 1286163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn * the License. 1386163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn * 1486163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn */ 1586163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn 1686163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahnpackage android.support.v17.leanback.supportleanbackshowcase.cards.models; 1786163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn 1886163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahnimport android.content.Context; 1986163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahnimport android.support.v17.leanback.supportleanbackshowcase.R; 2086163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahnimport android.support.v17.leanback.widget.Row; 2186163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahnimport android.support.v17.leanback.widget.RowPresenter; 2286163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahnimport android.view.LayoutInflater; 2386163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahnimport android.view.View; 2486163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahnimport android.view.ViewGroup; 2586163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahnimport android.widget.TextView; 2686163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn 2786163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahnimport com.google.gson.annotations.SerializedName; 2886163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn 2986163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahnpublic class Song extends Row { 3086163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn 3186163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn @SerializedName("title") private String mTitle = ""; 3286163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn @SerializedName("description") private String mDescription = ""; 3386163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn @SerializedName("text") private String mText = ""; 3486163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn @SerializedName("image") private String mImage = null; 3586163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn @SerializedName("file") private String mFile = null; 3686163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn @SerializedName("duration") private String mDuration = null; 3786163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn @SerializedName("number") private int mNumber = 0; 3886163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn 3986163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn 4086163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn public String getDuration() { 4186163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn return mDuration; 4286163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn } 4386163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn 4486163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn public int getNumber() { 4586163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn return mNumber; 4686163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn } 4786163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn 4886163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn public String getText() { 4986163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn return mText; 5086163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn } 5186163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn 5286163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn public String getDescription() { 5386163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn return mDescription; 5486163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn } 5586163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn 5686163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn public String getTitle() { 5786163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn return mTitle; 5886163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn } 5986163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn 6086163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn public int getFileResource(Context context) { 6186163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn return context.getResources() 6286163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn .getIdentifier(mFile, "raw", context.getPackageName()); 6386163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn } 6486163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn 6586163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn public int getImageResource(Context context) { 6686163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn return context.getResources() 6786163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn .getIdentifier(mImage, "drawable", context.getPackageName()); 6886163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn } 6986163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn 7086163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn public interface OnSongRowClickListener { 7186163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn 7286163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn void onSongRowClicked(Song song); 7386163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn 7486163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn } 7586163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn 7686163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn public static class Presenter extends RowPresenter implements View.OnClickListener { 7786163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn 7886163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn private final Context mContext; 7986163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn private OnSongRowClickListener mClickListener; 8086163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn 8186163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn 8286163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn public Presenter(Context context) { 8386163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn mContext = context; 8486163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn setHeaderPresenter(null); 8586163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn } 8686163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn 8786163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn public void setOnClickListener(OnSongRowClickListener listener) { 8886163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn mClickListener = listener; 8986163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn } 9086163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn 9186163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn @Override protected ViewHolder createRowViewHolder(ViewGroup parent) { 9286163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn View view = LayoutInflater.from(mContext).inflate(R.layout.row_song, parent, false); 9386163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn view.findViewById(R.id.rowContainer).setOnClickListener(this); 9486163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn return new ViewHolder(view); 9586163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn } 9686163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn 9786163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn @Override public boolean isUsingDefaultSelectEffect() { 9886163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn return false; 9986163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn } 10086163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn 10186163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn @Override protected void onBindRowViewHolder(ViewHolder vh, Object item) { 10286163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn super.onBindRowViewHolder(vh, item); 10386163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn Song song = (Song) item; 10486163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn ((TextView) vh.view.findViewById(R.id.trackNumber)).setText("" + song.getNumber()); 10586163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn ((TextView) vh.view.findViewById(R.id.trackDuration)).setText(song.getDuration()); 10686163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn String text = song.getTitle() + " / " + song.getDescription(); 10786163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn ((TextView) vh.view.findViewById(R.id.trackName)).setText(text); 10886163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn vh.view.findViewById(R.id.rowContainer).setTag(item); 10986163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn } 11086163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn 11186163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn @Override public void onClick(View v) { 11286163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn if (mClickListener == null) return; 11386163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn mClickListener.onSongRowClicked((Song) v.getTag()); 11486163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn } 11586163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn } 11686163d539e1aeb9ae7612def7aaf7dbfc5b88f28Robert Hahn} 117