package com.atguigu.recyclerviewdemo;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayList;
/**
* 作者:尚硅谷-杨光福 on 2017/1/18 14:54
* 微信:yangguangfu520
* QQ号:541433511
* 作用:RecyclerView的适配器
*/
public class RecyclerDemoAdapter extends RecyclerView.Adapter<RecyclerDemoAdapter.MyViewHolder> {
private final Context mContext;
private final ArrayList<String> datas;
public RecyclerDemoAdapter(Context context, ArrayList<String> datas) {
this.mContext = context;
this.datas = datas;
}
/**
* 得到数据的总数
* @return
*/
@Override
public int getItemCount() {
return datas.size();
}
/**
* 创建ViewHolder
* @param parent
* @param viewType
* @return
*/
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new MyViewHolder(View.inflate(mContext,R.layout.item,null));
}
/**
* 把数据绑定到ViewHolder上
* @param holder
* @param position
*/
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
//1.根据位置得到数据
String data = datas.get(position);
//2.绑定数据
holder.tv_name.setText(data);
}
/**
* 添加数据
* @param data
*/
public void addData(int position,String data) {
datas.add(position,data);
//刷新数据
notifyItemInserted(position);
}
/*
删除数据
*/
public void removewData(int positon) {
datas.remove(positon);
notifyItemRemoved(positon);
}
/**
* ViewHolder
*/
class MyViewHolder extends RecyclerView.ViewHolder{
private ImageView iv_icon;
private TextView tv_name;
public MyViewHolder(View itemView) {
super(itemView);
iv_icon = (ImageView) itemView.findViewById(R.id.iv_icon);
tv_name = (TextView) itemView.findViewById(R.id.tv_name);
//设置item的点击事件
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//getLayoutPosition 把你点击的View的对应的位置
// Toast.makeText(mContext, "data=="+datas.get(getLayoutPosition()), Toast.LENGTH_SHORT).show();
if(listener != null){
listener.onItemClick(getLayoutPosition());
}
}
});
}
}
/**
* item点击的监听器
*/
public interface OnItemClickListener{
/**
* 单点击item的时候回调
* @param postion
*/
public void onItemClick(int postion);
}
private OnItemClickListener listener;
/*
设置item的点击监听
*/
public void setOnItemClickListener(OnItemClickListener listener) {
this.listener = listener;
}
}