package mcxtzhang.zandemo;
import android.content.Context;
import android.os.Handler;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import java.util.List;
/**
* Created by zhangxutong .
* Date: 16/08/28
*/
public class ZanAdapter extends RecyclerView.Adapter<ZanAdapter.ViewHolder> {
private Context mContext;
private List<ZanBean> mDatas;
private LayoutInflater mInflater;
private ZanCallBack mZanCallBack;//点赞的回调
public ZanAdapter(Context mContext, List<ZanBean> mDatas) {
this.mContext = mContext;
this.mDatas = mDatas;
mInflater = LayoutInflater.from(mContext);
if (mContext instanceof ZanCallBack) {
mZanCallBack = (ZanCallBack) mContext;
}
}
@Override
public ZanAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new ViewHolder(mInflater.inflate(R.layout.item_zan, parent, false));
}
@Override
public void onBindViewHolder(final ZanAdapter.ViewHolder holder, final int position) {
final ZanBean zanBean = mDatas.get(position);
holder.tvZan.setText(zanBean.getZanCount() + "");
holder.tvZan.setSelected(zanBean.isZaned());
holder.tvZan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//点击事件执行后,立刻改变UI,产生动画 , 但是数据先不改变。
// 用一个变量保存position,因为holder是复用的,等操作回调时,holder可能已经不再屏幕或者被复用了
final int pos = holder.getLayoutPosition();
//动画
//UI改变
holder.tvZan.setSelected(!zanBean.isZaned());
//模拟点赞的网络操作,点赞 取消点赞 接口肯定是一个,只不过参数不同。
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
if (null != mZanCallBack) {
double random = Math.random();
if (random > 0.5) {//成功
Toast.makeText(mContext, (zanBean.isZaned() ? "取消点赞" : "点赞") + "操作成功,回调:" + pos, Toast.LENGTH_SHORT).show();
mZanCallBack.onSuccess(pos);
} else {//失败
Toast.makeText(mContext, (zanBean.isZaned() ? "取消点赞" : "点赞") + "操作失败,回调:" + pos, Toast.LENGTH_SHORT).show();
mZanCallBack.onError(pos);
}
}
}
}, 2000);
}
});
}
@Override
public int getItemCount() {
return mDatas != null ? mDatas.size() : 0;
}
public static class ViewHolder extends RecyclerView.ViewHolder {
TextView tvZan;
public ViewHolder(View itemView) {
super(itemView);
tvZan = (TextView) itemView.findViewById(R.id.tvZan);
}
}
}