/*
* Copyright 2015 TedXiong <xiong-wei@hotmail.com>
*
* 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.android.ted.gank.adapter;
import android.content.Context;
import android.support.annotation.LayoutRes;
import android.support.v4.view.ViewCompat;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.android.ted.gank.R;
import com.android.ted.gank.db.Image;
import com.android.ted.gank.view.RadioImageView;
import com.bumptech.glide.Glide;
import butterknife.Bind;
import butterknife.ButterKnife;
/***
*
*/
public abstract class BenefitGoodsItemAdapter extends ArrayRecyclerAdapter<Image, BenefitGoodsItemAdapter.ViewHolder>{
private final Context context;
private final LayoutInflater inflater;
public BenefitGoodsItemAdapter(Context context) {
this.context = context;
this.inflater = LayoutInflater.from(context);
setHasStableIds(true);
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new ViewHolder(R.layout.benefit_goods_item_layout, parent);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
Image image = get(position);
holder.imageView.setOriginalSize(image.getWidth(), image.getHeight());
loadGoodsImage(holder, image);
ViewCompat.setTransitionName(holder.imageView, image.getUrl());
}
@Override
public long getItemId(int position) {
return get(position).getUrl().hashCode();
}
protected abstract void onItemClick(View v, int position);
public class ViewHolder extends RecyclerView.ViewHolder {
@Bind(R.id.image)
public RadioImageView imageView;
public ViewHolder(@LayoutRes int resource, ViewGroup parent) {
super(inflater.inflate(resource, parent, false));
ButterKnife.bind(this, itemView);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onItemClick(v, getAdapterPosition());
}
});
}
}
private void loadGoodsImage(ViewHolder holder, Image imgGoods) {
if (null == imgGoods || TextUtils.isEmpty(imgGoods.getUrl())) {
Glide.with(context)
.load(R.drawable.item_default_img)
.into(holder.imageView);
} else {
Glide.with(context)
.load(imgGoods.getUrl())
.into(holder.imageView);
}
}
}