Back to project page Renderers.
The source code is released under:
Apache License
If you think the Android project Renderers listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
/* * Copyright (C) 2014 Pedro Vicente Gmez Snchez. *// ww w .j a va 2 s . c o m * 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 com.pedrogomez.renderers.ui.builder; import android.content.Context; import com.pedrogomez.renderers.Renderer; import com.pedrogomez.renderers.RendererBuilder; import com.pedrogomez.renderers.model.Video; import com.pedrogomez.renderers.ui.renderers.FavoriteVideoRenderer; import com.pedrogomez.renderers.ui.renderers.LikeVideoRenderer; import com.pedrogomez.renderers.ui.renderers.LiveVideoRenderer; import com.pedrogomez.renderers.ui.renderers.VideoRenderer; import java.util.Collection; import java.util.LinkedList; import java.util.List; import javax.inject.Inject; /** * RendererBuilder extension created to work with videos. This class works as connector between * RendererAdapter and * VideoRenderers. Define the mapping between Videos and VideoRenderers. * * @author Pedro Vicente Gmez Snchez. */ public class VideoRendererBuilder extends RendererBuilder<Video> { @Inject public VideoRendererBuilder(Context context, VideoRenderer.OnVideoClicked onVideoClicked) { Collection<Renderer<Video>> prototypes = getPrototypes(context, onVideoClicked); setPrototypes(prototypes); } /** * Method to declare Video-VideoRenderer mapping. * Favorite videos will be rendered using FavoriteVideoRenderer. * Live videos will be rendered using LiveVideoRenderer. * Liked videos will be rendered using LikeVideoRenderer. * * @param content used to map object-renderers. * @return VideoRenderer subtype class. */ @Override protected Class getPrototypeClass(Video content) { Class prototypeClass; if (content.isFavorite()) { prototypeClass = FavoriteVideoRenderer.class; } else if (content.isLive()) { prototypeClass = LiveVideoRenderer.class; } else { prototypeClass = LikeVideoRenderer.class; } return prototypeClass; } /** * Create a list of prototypes to configure RendererBuilder. * The list of Renderer<Video> that contains all the possible renderers that our RendererBuilder * is going to use. * * @return Renderer<Video> prototypes for RendererBuilder. */ private List<Renderer<Video>> getPrototypes(Context context, VideoRenderer.OnVideoClicked onVideoClickedListener) { List<Renderer<Video>> prototypes = new LinkedList<Renderer<Video>>(); LikeVideoRenderer likeVideoRenderer = new LikeVideoRenderer(context); likeVideoRenderer.setListener(onVideoClickedListener); prototypes.add(likeVideoRenderer); FavoriteVideoRenderer favoriteVideoRenderer = new FavoriteVideoRenderer(context); favoriteVideoRenderer.setListener(onVideoClickedListener); prototypes.add(favoriteVideoRenderer); LiveVideoRenderer liveVideoRenderer = new LiveVideoRenderer(context); liveVideoRenderer.setListener(onVideoClickedListener); prototypes.add(liveVideoRenderer); return prototypes; } }