package com.mcxtzhang.diffutilsdemo;
import android.content.Context;
import android.os.Bundle;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.List;
import static android.content.ContentValues.TAG;
/**
* 介绍:普普通的adapter,
* 但是 唯一亮点~
* public void onBindViewHolder(DiffVH holder, int position, List<Object> payloads)
* 重写这个方法
* 作者:zhangxutong
* 邮箱:zhangxutong@imcoming.com
* 时间: 2016/9/12.
*/
public class DiffAdapter extends RecyclerView.Adapter<DiffAdapter.DiffVH> {
private final static String TAG = "zxt";
private List<TestBean> mDatas;
private Context mContext;
private LayoutInflater mInflater;
public DiffAdapter(Context mContext, List<TestBean> mDatas) {
this.mContext = mContext;
this.mDatas = mDatas;
mInflater = LayoutInflater.from(mContext);
}
public void setDatas(List<TestBean> mDatas) {
this.mDatas = mDatas;
}
@Override
public DiffVH onCreateViewHolder(ViewGroup parent, int viewType) {
return new DiffVH(mInflater.inflate(R.layout.item_diff, parent, false));
}
@Override
public void onBindViewHolder(final DiffVH holder, final int position) {
TestBean bean = mDatas.get(position);
holder.tv1.setText(bean.getName());
holder.tv2.setText(bean.getDesc());
holder.iv.setImageResource(bean.getPic());
if (position ==2){
new Thread(new Runnable() {
@Override
public void run() {
while (true){
try {
Log.d(TAG, "实验 getAdapterPosition 和 getLayoutPosition 不一样的时候: position = [" + position + "], payloads = [" + "]");
Log.d(TAG, "实验 getAdapterPosition 和 getLayoutPosition 不一样的时候: holder.getAdapterPosition() = [" + holder.getAdapterPosition() + "], payloads = [" + "]");
Log.d(TAG, "实验 getAdapterPosition 和 getLayoutPosition 不一样的时候: holder.getLayoutPosition() = [" + holder.getLayoutPosition() + "], payloads = [" + "]");
//Log.d(TAG, " holder.getPosition() = [" + holder.getPosition() + "], payloads = [" + "]");
//Log.d(TAG, "holder.getOldPosition() = [" + holder.getOldPosition() + "], payloads = [" + "]");
Thread.sleep(1);
} catch (InterruptedException e) {
Log.e(TAG, "run: error");
e.printStackTrace();
}
}
}
}).start();
}
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d(TAG, "onBindViewHolder() called with: holder = [" + holder + "], position = [" + position + "], payloads = [" + "]");
Log.d(TAG, "onBindViewHolder() called with: holder = [" + holder + "], holder.getAdapterPosition() = [" + holder.getAdapterPosition() + "], payloads = [" + "]");
Log.d(TAG, "onBindViewHolder() called with: holder = [" + holder + "], holder.getLayoutPosition() = [" + holder.getLayoutPosition() + "], payloads = [" + "]");
Log.d(TAG, "onBindViewHolder() called with: holder = [" + holder + "], holder.getPosition() = [" + holder.getPosition() + "], payloads = [" + "]");
Log.d(TAG, "onBindViewHolder() called with: holder = [" + holder + "], holder.getOldPosition() = [" + holder.getOldPosition() + "], payloads = [" + "]");
}
});
}
@Override
public void onBindViewHolder(DiffVH holder, int position, List<Object> payloads) {
Log.d(TAG, "onBindViewHolder() called with: holder = [" + holder + "], position = [" + position + "], payloads = [" + "]");
Log.d(TAG, "onBindViewHolder() called with: holder = [" + holder + "], holder.getAdapterPosition() = [" + holder.getAdapterPosition() + "], payloads = [" + "]");
Log.d(TAG, "onBindViewHolder() called with: holder = [" + holder + "], holder.getLayoutPosition() = [" + holder.getLayoutPosition() + "], payloads = [" + "]");
Log.d(TAG, "onBindViewHolder() called with: holder = [" + holder + "], holder.getPosition() = [" + holder.getPosition() + "], payloads = [" + "]");
Log.d(TAG, "onBindViewHolder() called with: holder = [" + holder + "], holder.getOldPosition() = [" + holder.getOldPosition() + "], payloads = [" + "]");
if (payloads.isEmpty()) {
onBindViewHolder(holder, position);
} else {
//文艺青年中的文青
Bundle payload = (Bundle) payloads.get(0);
TestBean bean = mDatas.get(position);
for (String key : payload.keySet()) {
switch (key) {
case "KEY_DESC":
//这里可以用payload里的数据,不过data也是新的 也可以用
holder.tv2.setText(bean.getDesc());
break;
case "KEY_PIC":
holder.iv.setImageResource(payload.getInt(key));
break;
default:
break;
}
}
}
}
@Override
public int getItemCount() {
return mDatas != null ? mDatas.size() : 0;
}
class DiffVH extends RecyclerView.ViewHolder {
TextView tv1, tv2;
ImageView iv;
public DiffVH(View itemView) {
super(itemView);
tv1 = (TextView) itemView.findViewById(R.id.tv1);
tv2 = (TextView) itemView.findViewById(R.id.tv2);
iv = (ImageView) itemView.findViewById(R.id.iv);
}
}
}