package licola.demo.com.huabandemo.Adapter;
import android.graphics.Color;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageButton;
import android.widget.TextView;
import com.facebook.drawee.view.SimpleDraweeView;
import licola.demo.com.huabandemo.Base.BaseRecyclerAdapter;
import licola.demo.com.huabandemo.HttpUtils.ImageLoad.ImageLoadBuilder;
import licola.demo.com.huabandemo.HttpUtils.ImageLoad.ImageLoadFresco;
import licola.demo.com.huabandemo.R;
import licola.demo.com.huabandemo.Util.CompatUtils;
import static android.view.View.OnClickListener;
import static licola.demo.com.huabandemo.Module.SearchResult.SearchPeopleListBean.UsersBean;
/**
* Created by LiCola on 2016/03/22 18:00
* 负责展示 图片CardView 的adapter
*/
public class RecyclerPeopleAdapter extends BaseRecyclerAdapter<UsersBean> {
private OnAdapterListener mListener;
private final String mFansFormat;
private final String mHttpRoot;
public interface OnAdapterListener {
void onClickUser(UsersBean bean, View view);
}
public RecyclerPeopleAdapter(RecyclerView mRecyclerView) {
super(mRecyclerView);
this.mFansFormat = mContext.getResources().getString(R.string.text_fans_number);
this.mHttpRoot = mContext.getResources().getString(R.string.httpRoot);
}
public void setOnClickItemListener(OnAdapterListener mListener) {
this.mListener = mListener;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
//Logger.d(life);
ViewHolderGeneral holder = null;//ViewHolder的子类
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.cardview_item_user, parent, false);
holder = new ViewHolderGeneral(view);//使用子类初始化ViewHolder
holder.ibtn_image_user_chevron_right.setImageDrawable(
CompatUtils.getTintListDrawable(mContext, R.drawable.ic_chevron_right_black_36dp, R.color.tint_list_grey));
//子类可以自动转型为父类
return holder;
}
@Override
public void onViewRecycled(RecyclerView.ViewHolder holder) {
super.onViewRecycled(holder);
//当有被被回收viewHolder调用
//Logger.d(life);
}
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) {
//Logger.d(life);
final UsersBean bean = mList.get(position);
//父类强制转换成子类 因为这个holder本来就是子类初始化的 所以可以强转
ViewHolderGeneral viewHolder = (ViewHolderGeneral) holder;//强制类型转换 转成内部的ViewHolder
onBindData(viewHolder, bean);
onBindListener(viewHolder, bean);//初始化点击事件
}
private void onBindData(final ViewHolderGeneral holder, UsersBean bean) {
//检查图片信息
if (checkInfoContext(bean)) {
holder.tv_image_user.setText(bean.getUsername());
holder.tv_image_about.setText(String.format(mFansFormat, bean.getFollower_count()));
} else {
//// TODO: 2016/4/5 0005 空值显示处理
}
//用户信息
String url = bean.getAvatar();
//非空检查
if (url != null) {
//如果是花瓣本地服务器的图片 不包含只有图片的key 加载时需要添加http头
//否则 可以直接使用
if (!url.contains(mHttpRoot)) {
url = String.format(mUrlSmallFormat, url);
}
ImageLoadBuilder.Start(mContext,holder.img_image_user,url)
.setPlaceHolderImage(CompatUtils.getTintDrawable(mContext,R.drawable.ic_account_circle_gray_48dp, Color.GRAY))
.setIsCircle(true)
.build();
}else {
//// TODO: 2016/4/6 0006 对于同一个View,请不要多次调用setHierarchy,即使这个View是可回收的。创建 DraweeHierarchy 的较为耗时的一个过程,应该多次利用。
// holder.img_image_user.setImageURI(null);
holder.img_image_user.getHierarchy().setPlaceholderImage(R.drawable.ic_account_circle_gray_48dp);
}
}
/**
* 检查三项信息 任何一项不为空 都返回true
*
* @param bean
* @return
*/
private boolean checkInfoContext(UsersBean bean) {
return true;
}
private void onBindListener(ViewHolderGeneral holder, final UsersBean bean) {
holder.mView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mListener.onClickUser(bean, v);
}
});
}
public static class ViewHolderGeneral extends RecyclerView.ViewHolder {
//这个CardView采用两层操作
public final View mView;
public final SimpleDraweeView img_image_user;
public final ImageButton ibtn_image_user_chevron_right;
public final TextView tv_image_user;
public final TextView tv_image_about;
public ViewHolderGeneral(View view) {
super(view);
mView = view;
img_image_user = (SimpleDraweeView) view.findViewById(R.id.img_image_user);//主图
ibtn_image_user_chevron_right = (ImageButton) view.findViewById(R.id.ibtn_image_user_chevron_right);//播放按钮
tv_image_user = (TextView) view.findViewById(R.id.tv_image_user);
tv_image_about = (TextView) view.findViewById(R.id.tv_image_about);
}
}
}