Android Open Source - Cervantes Renderer Adapter






From Project

Back to project page Cervantes.

License

The source code is released under:

Apache License

If you think the Android project Cervantes listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Copyright (C) 2014 Alejandro Rodriguez Salamanca.
 *//  w w w.j  ava2  s .co 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 me.alexrs.recyclerviewrenderers.adapter;

import android.support.v7.widget.RecyclerView;
import android.view.ViewGroup;

import java.util.List;

import me.alexrs.recyclerviewrenderers.builder.RendererBuilder;
import me.alexrs.recyclerviewrenderers.interfaces.Builder;
import me.alexrs.recyclerviewrenderers.interfaces.Renderable;
import me.alexrs.recyclerviewrenderers.renderer.Renderer;
import me.alexrs.recyclerviewrenderers.viewholder.RenderViewHolder;

/**
 * @author Alejandro Rodriguez <https://github.com/Alexrs95>
 *         <p/>
 *         Adapter created to manage the Renderers. This is the main class of this library.
 *         The main objective of this class is to avoid creating new adapters for each type of data
 *         we want to show in our RecyclerViews. Also, this adapter allows to display different
 *         elements with different data that exexute different actions.
 */
public class RendererAdapter extends RecyclerView.Adapter<RenderViewHolder> {

    /**
     * List containing the renderables
     */
    private List<Renderable> data;

    /**
     * Builder to instantiate the Renderer
     */
    private Builder builder;

    /**
     * @param data    List that contains the data to show
     * @param builder Builder that create the Renderers
     */
    public RendererAdapter(List<Renderable> data, RendererBuilder builder) {
        this.data = data;
        if (data == null) {
            throw new IllegalArgumentException("Data must not be null");
        }

        this.builder = builder;
        if (builder == null) {
            throw new IllegalArgumentException("Builder must not be null");
        }
    }


    @Override
    public RenderViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
        Renderer renderer = builder.instantiate(viewType).create();
        return renderer.onCreateViewHolder(viewGroup, viewType);
    }

    @Override
    public void onBindViewHolder(RenderViewHolder holder, int position) {
        holder.onBindView(data.get(position));
    }

    @Override
    public void onViewRecycled(RenderViewHolder holder) {
        super.onViewRecycled(holder);
        holder.onViewRecycled();
    }

    @Override
    public void onViewAttachedToWindow(RenderViewHolder holder) {
        super.onViewAttachedToWindow(holder);
        holder.onViewAttachedToWindow();
    }

    @Override
    public void onViewDetachedFromWindow(RenderViewHolder holder) {
        super.onViewDetachedFromWindow(holder);
        holder.onViewDetachedFromWindow();
    }

    @Override
    public int getItemCount() {
        return data.size();
    }

    @Override
    public int getItemViewType(int position) {
        return data.get(position).getRenderableId();
    }

}




Java Source Code List

me.alexrs.cervantes.ApplicationTest.java
me.alexrs.cervantes.core.application.CervantesApplication.java
me.alexrs.cervantes.core.data.Header.java
me.alexrs.cervantes.core.data.Meaning.java
me.alexrs.cervantes.core.data.MultipleResponseWord.java
me.alexrs.cervantes.core.data.Nebrija.java
me.alexrs.cervantes.core.data.Word.java
me.alexrs.cervantes.core.events.SearchEvent.java
me.alexrs.cervantes.core.events.SearchFailed.java
me.alexrs.cervantes.core.events.SearchPerformed.java
me.alexrs.cervantes.core.jobs.GetDailyWordJob.java
me.alexrs.cervantes.core.jobs.GetRandomWordJob.java
me.alexrs.cervantes.core.jobs.GetWordJob.java
me.alexrs.cervantes.core.module.CervantesModule.java
me.alexrs.cervantes.core.network.api.NebrijaApi.java
me.alexrs.cervantes.core.network.client.RestClient.java
me.alexrs.cervantes.core.utils.NebrijaStatus.java
me.alexrs.cervantes.core.utils.NebrijaType.java
me.alexrs.cervantes.core.utils.Truss.java
me.alexrs.cervantes.ui.activity.BaseActivity.java
me.alexrs.cervantes.ui.activity.CervantesActivity.java
me.alexrs.cervantes.ui.components.CapitalizedTextView.java
me.alexrs.cervantes.ui.controller.activity.AbsActivityController.java
me.alexrs.cervantes.ui.controller.activity.ActivityController.java
me.alexrs.cervantes.ui.controller.activity.CervantesActivityController.java
me.alexrs.cervantes.ui.controller.fragment.AbsFragmentController.java
me.alexrs.cervantes.ui.controller.fragment.CervantesFragmentController.java
me.alexrs.cervantes.ui.controller.fragment.FragmentController.java
me.alexrs.cervantes.ui.fragment.BaseFragment.java
me.alexrs.cervantes.ui.fragment.CervantesFragment.java
me.alexrs.cervantes.ui.presenter.AbsPresenter.java
me.alexrs.cervantes.ui.presenter.BasePresenter.java
me.alexrs.cervantes.ui.presenter.CervantesFragmentPresenter.java
me.alexrs.cervantes.ui.presenter.EmptyViewPresenter.java
me.alexrs.cervantes.ui.recyclerview.factory.Factory.java
me.alexrs.cervantes.ui.recyclerview.renderers.ItemMeaning.java
me.alexrs.cervantes.ui.recyclerview.renderers.ItemMultipleWords.java
me.alexrs.cervantes.ui.recyclerview.renderers.ItemSearchHeader.java
me.alexrs.cervantes.ui.recyclerview.renderers.ItemWordHeader.java
me.alexrs.cervantes.ui.recyclerview.viewholder.MeaningViewHolder.java
me.alexrs.cervantes.ui.recyclerview.viewholder.MultipleWordsViewHolder.java
me.alexrs.cervantes.ui.recyclerview.viewholder.SearchHeaderViewHolder.java
me.alexrs.cervantes.ui.recyclerview.viewholder.WordHeadersViewHolder.java
me.alexrs.recyclerviewrenderers.adapter.RendererAdapter.java
me.alexrs.recyclerviewrenderers.builder.RendererBuilder.java
me.alexrs.recyclerviewrenderers.interfaces.Builder.java
me.alexrs.recyclerviewrenderers.interfaces.Renderable.java
me.alexrs.recyclerviewrenderers.interfaces.RendererFactory.java
me.alexrs.recyclerviewrenderers.renderer.Renderer.java
me.alexrs.recyclerviewrenderers.viewholder.RenderViewHolder.java