/* * Copyright (c) 2015 Zelory. * * 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 id.zelory.codepolitan.ui.adapter; import android.content.Context; import android.os.Bundle; import android.view.ViewGroup; import id.zelory.benih.adapter.BenihHeaderAdapter; import id.zelory.benih.adapter.viewholder.BenihItemViewHolder; import id.zelory.codepolitan.R; import id.zelory.codepolitan.data.model.Article; import id.zelory.codepolitan.ui.adapter.viewholder.NewsHeaderViewHolder; import id.zelory.codepolitan.ui.adapter.viewholder.NewsItemViewHolder; import id.zelory.codepolitan.ui.adapter.viewholder.SearchFooterViewHolder; /** * Created on : July 28, 2015 * Author : zetbaitsu * Name : Zetra * Email : zetra@mail.ugm.ac.id * GitHub : https://github.com/zetbaitsu * LinkedIn : https://id.linkedin.com/in/zetbaitsu */ public class NewsAdapter extends BenihHeaderAdapter<Article, BenihItemViewHolder<Article>, NewsHeaderViewHolder> { private final static int TYPE_BIG = 2; private final static int TYPE_MINI = 3; private final static int TYPE_FOOTER = 4; public NewsAdapter(Context context, Bundle bundle) { super(context, bundle); } @Override protected int getHeaderResourceLayout() { return R.layout.list_header_news; } @Override protected int getItemResourceLayout(int viewType) { switch (viewType) { case TYPE_BIG: return R.layout.list_item_news_big; case TYPE_FOOTER: return R.layout.list_footer_search; default: return R.layout.list_item_news_mini; } } @Override protected NewsHeaderViewHolder onCreateHeaderViewHolder(ViewGroup viewGroup, int viewType) { return new NewsHeaderViewHolder(getView(viewGroup, viewType), bundle); } @Override public BenihItemViewHolder<Article> onCreateItemViewHolder(ViewGroup viewGroup, int viewType) { switch (viewType) { case TYPE_FOOTER: return new SearchFooterViewHolder(getView(viewGroup, viewType), itemClickListener, longItemClickListener); } return new NewsItemViewHolder(getView(viewGroup, viewType), itemClickListener, longItemClickListener); } @Override public int getItemViewType(int position) { if (position == 0 && hasHeader) { return TYPE_HEADER; } else if (!hasHeader && position == data.size() - 1) { return TYPE_FOOTER; } else if (data.get(position).isBig()) { return TYPE_BIG; } else { return TYPE_MINI; } } }