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