package com.likebamboo.osa.android.ui.adapter;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.android.volley.toolbox.ImageLoader;
import com.likebamboo.osa.android.R;
import com.likebamboo.osa.android.entity.AuthorList;
import com.likebamboo.osa.android.impl.ImageLoaderListener;
import com.likebamboo.osa.android.interfaces.IOnItemClickListener;
import com.likebamboo.osa.android.request.RequestManager;
import com.likebamboo.osa.android.request.RequestUrl;
import com.likebamboo.osa.android.ui.view.CircleImageView;
import com.likebamboo.osa.android.ui.view.fa.TextAwesome;
import com.likebamboo.osa.android.ui.view.fastscroll.BubbleTextGetter;
import butterknife.ButterKnife;
import butterknife.InjectView;
/**
* Created by wentaoli on 2015/5/14.
*/
public class AuthorAdapter extends BaseRecycleAdapter<AuthorList.Author> implements BubbleTextGetter {
private IOnItemClickListener mItemClickListener = null;
private IOnAuthorInfoClickListener mInfoClickListener = null;
/**
* 设置回调
*
* @param l
*/
public void setOnInfoClickListner(IOnAuthorInfoClickListener l) {
this.mInfoClickListener = l;
}
/**
* 设置回调
*
* @param l
*/
public void setOnItemClickListener(IOnItemClickListener l) {
this.mItemClickListener = l;
}
public AuthorAdapter(Context mContext) {
super(mContext);
}
@Override
public RecyclerView.ViewHolder onCreateViewItemHolder(ViewGroup viewGroup, int viewType) {
// 创建一个View
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_author, viewGroup, false);
// 创建一个ViewHolder
ItemViewHolder holder = new ItemViewHolder(view);
return holder;
}
@Override
public void onBindItemViewHolder(RecyclerView.ViewHolder viewHolder, int position) {
if (viewHolder == null || !(viewHolder instanceof ItemViewHolder)) {
return;
}
AuthorList.Author item = getItem(position);
if (item == null) {
return;
}
final ItemViewHolder holder = (ItemViewHolder) viewHolder;
holder.avatarIv.setImageResource(R.drawable.default_avatar);
if (!TextUtils.isEmpty(item.getAvatar())) {
String url = RequestUrl.BASE_URL + item.getAvatar();
// 加载图片
ImageLoader imageLoader = RequestManager.getImageLoader();
imageLoader.get(url, new ImageLoaderListener(holder.avatarIv, url, R.drawable.default_avatar));
}
// 作者名称
holder.nameTv.setText(item.getName());
// 博客
holder.blogTv.setText(R.string.fa_link, item.getBlog());
holder.blogTv.setTag(position);
holder.blogTv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mInfoClickListener == null) {
return;
}
Object obj = view.getTag();
try {
int pos = Integer.parseInt(obj + "");
AuthorList.Author item = getItem(pos);
if (item == null) {
return;
}
mInfoClickListener.onAuthorBlogLinkClick(pos, item.getBlog());
} catch (Exception e) {
e.printStackTrace();
}
}
});
// item点击事件
holder.rootView.setTag(position);
holder.rootView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mItemClickListener == null) {
return;
}
Object obj = view.getTag();
try {
int pos = Integer.parseInt(obj + "");
mItemClickListener.onItemClick(pos, getItem(pos));
} catch (Exception e) {
e.printStackTrace();
}
}
});
holder.infoTv.setTag(position);
holder.infoTv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mInfoClickListener == null) {
return;
}
Object obj = view.getTag();
try {
int pos = Integer.parseInt(obj + "");
mInfoClickListener.onAuthorInfoClick(pos, getItem(pos));
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
@Override
public String getTextToShowInBubble(int pos) {
AuthorList.Author item = getItem(pos);
if (item != null) {
return item.getIndex();
}
return "#";
}
public static class ItemViewHolder extends RecyclerView.ViewHolder {
@InjectView(R.id.author_item_layout)
public View rootView;
@InjectView(R.id.author_blog_tv)
public TextAwesome blogTv;
@InjectView(R.id.author_name_tv)
public TextView nameTv;
@InjectView(R.id.author_info_tv)
public TextView infoTv;
@InjectView(R.id.author_avatar_iv)
public CircleImageView avatarIv;
public ItemViewHolder(View view) {
super(view);
ButterKnife.inject(this, view);
}
}
public interface IOnAuthorInfoClickListener {
/**
* 点击作者信息
*
* @param position
* @param author
*/
void onAuthorInfoClick(int position, AuthorList.Author author);
/**
* 作者博客链接点击事件
*
* @param position
* @param blogLink
*/
void onAuthorBlogLinkClick(int position, String blogLink);
}
}