當你想在Activity中處理Aapter中的數(shù)據(jù)和點擊事件時,還得將Activity中的數(shù)據(jù)傳到Adapter中, 只要在Adapter中寫一個回調(diào)接口,這樣就能直接在Acitivity中處理了,不用來回傳接數(shù)據(jù)了.
1.在Adapter類中定義一個接口,例如就是這個 MyViewHolerClicks
public interface MyViewHolerClicks {
//item的回調(diào)方法
void onItemClick(int position);
//刪除按鈕的回調(diào)方法
void deleteClick(int position);
}
2..在Adapter類將MyViewHolerClicks 設置為set方法,安卓快捷鍵alt+insert直接選擇 setter
public MyViewHolerClicks myViewHolerClicks;
/**
* 供外部Activity調(diào)用的
*
* @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中的接口,實現(xiàn)接口中的方法
/**
* Adapter中詳情點擊事件
* 刪除按鈕的點擊事件
*/
UploadProductionDisplayAdapter.MyViewHolerClicks myViewHolerClicks = new UploadProductionDisplayAdapter.MyViewHolerClicks() {
/**
* 每個item的點擊事件
*/
@Override
public void onItemClick(int position) {
}
/**
* 每個item的中刪除按鈕的點擊事件
*/
@Override
public void deleteClick(int position) {
//根據(jù)position刪除展示列表的數(shù)據(jù)
}
};
4.在你要使用的Activity界面
//初始化Adapter
TestAdatper adpter=new TestAdapter(this);
recyclerview.setAdapter(adpter);
adpter.setMyViewHolerClicks(myViewHolerClicks);