/* * Copyright 2017 lizhaotailang * * 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.marktony.zhihudaily.adapter; import android.content.Context; import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.bumptech.glide.Glide; import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.marktony.zhihudaily.R; import com.marktony.zhihudaily.bean.DoubanMomentNews; import com.marktony.zhihudaily.interfaze.OnRecyclerViewOnClickListener; import java.util.ArrayList; import java.util.List; /** * Created by Lizhaotailang on 2016/8/11. */ public class DoubanMomentAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private final Context context; private final LayoutInflater inflater; private List<DoubanMomentNews.posts> list; private static final int TYPE_NORMAL = 0x00; private static final int TYPE_FOOTER = 0x02; private static final int TYPE_NO_IMG = 0x03; private OnRecyclerViewOnClickListener listener; public DoubanMomentAdapter(@NonNull Context context, @NonNull ArrayList<DoubanMomentNews.posts> list) { this.context = context; this.inflater = LayoutInflater.from(context); this.list = list; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { switch (viewType) { case TYPE_NORMAL: return new NormalViewHolder(inflater.inflate(R.layout.home_list_item_layout, parent, false), listener); case TYPE_NO_IMG: return new NoImgViewHolder(inflater.inflate(R.layout.home_list_item_without_image, parent, false), listener); case TYPE_FOOTER: return new FooterViewHolder(inflater.inflate(R.layout.list_footer, parent,false)); } return null; } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { if ( !(holder instanceof FooterViewHolder)) { DoubanMomentNews.posts item = list.get(position); if (holder instanceof NormalViewHolder) { Glide.with(context) .load(item.getThumbs().get(0).getMedium().getUrl()) .asBitmap() .placeholder(R.drawable.placeholder) .diskCacheStrategy(DiskCacheStrategy.SOURCE) .error(R.drawable.placeholder) .centerCrop() .into(((NormalViewHolder)holder).ivHeadlineImg); ((NormalViewHolder)holder).tvTitle.setText(item.getTitle()); } else if (holder instanceof NoImgViewHolder) { ((NoImgViewHolder)holder).tvTitle.setText(item.getTitle()); } } // handle the footer } @Override public int getItemViewType(int position) { if (position == list.size()) { return TYPE_FOOTER; } if (list.get(position).getThumbs().size() == 0) { return TYPE_NO_IMG; } return TYPE_NORMAL; } @Override public int getItemCount() { return list.size() + 1; } public void setItemClickListener(OnRecyclerViewOnClickListener listener){ this.listener = listener; } public class NormalViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{ ImageView ivHeadlineImg; TextView tvTitle; OnRecyclerViewOnClickListener listener; public NormalViewHolder(View itemView, OnRecyclerViewOnClickListener listener) { super(itemView); ivHeadlineImg = (ImageView) itemView.findViewById(R.id.imageViewCover); tvTitle = (TextView) itemView.findViewById(R.id.textViewTitle); this.listener = listener; itemView.setOnClickListener(this); } @Override public void onClick(View view) { if (listener != null){ listener.OnItemClick(view, getLayoutPosition()); } } } public class NoImgViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { TextView tvTitle; OnRecyclerViewOnClickListener listener; public NoImgViewHolder(View itemView, OnRecyclerViewOnClickListener listener) { super(itemView); tvTitle = (TextView) itemView.findViewById(R.id.textViewTitle); this.listener = listener; itemView.setOnClickListener(this); } @Override public void onClick(View view) { if (listener != null){ listener.OnItemClick(view, getLayoutPosition()); } } } public class FooterViewHolder extends RecyclerView.ViewHolder { public FooterViewHolder(View itemView) { super(itemView); } } }