当你想在Activity中处理Aapter中的数据和点击事件时,还得将Activity中的数据传到Adapter中, 只要在Adapter中写一个回调接口,这样就能直接在Acitivity中处理了,不用来回传接数据了.
1.在Adapter类中定义一个接口,例如就是这个 MyViewHolerClicks
public interface MyViewHolerClicks {
//item的回调方法
void onItemClick(int position);
//删除按钮的回调方法
void deleteClick(int position);
}
2..在Adapter类将MyViewHolerClicks 设置为set方法,安卓快捷键alt+insert直接选择 setter
public MyViewHolerClicks myViewHolerClicks;
/**
* 供外部Activity调用的
*
* @param myViewHolerClicks
*/
public void setMyViewHolerClicks(MyViewHolerClicks myViewHolerClicks) {
this.myViewHolerClicks = myViewHolerClicks;
}
3..在Adapter类的onBindViewHolder方法中设置点击事件
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
//绑定view的方法
if (myViewHolerClicks != null) {
holder.imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
myViewHolerClicks.onItemClick(position);
}
});
holder.deleteImg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
myViewHolerClicks.deleteClick(position);
}
});
}
}
4.在你要使用的Activity界面初始化Adapter中的接口,实现接口中的方法
/**
* Adapter中详情点击事件
* 删除按钮的点击事件
*/
UploadProductionDisplayAdapter.MyViewHolerClicks myViewHolerClicks = new UploadProductionDisplayAdapter.MyViewHolerClicks() {
/**
* 每个item的点击事件
*/
@Override
public void onItemClick(int position) {
}
/**
* 每个item的中删除按钮的点击事件
*/
@Override
public void deleteClick(int position) {
//根据position删除展示列表的数据
}
};
4.在你要使用的Activity界面
//初始化Adapter
TestAdatper adpter=new TestAdapter(this);
recyclerview.setAdapter(adpter);
adpter.setMyViewHolerClicks(myViewHolerClicks);