安卓recycleview的暴露給外面的呼叫者的子項監聽和刪除子項的坑
阿新 • • 發佈:2019-01-24
1.介面卡實現這個介面
implements View.OnClickListener
2.自定義一個介面
public static interface OnItemClickListener {
void onItemClick(View view , int position);
}
3.宣告這個介面
private OnItemClickListener mOnItemClickListener = null;
4.在onCreateViewHolder中新增每個item的點選事件。
//將建立的itemView註冊點選事件 view.setOnClickListener(this);
5.在onBindViewHolder方法中進行setTag的設定,這樣才能得到item的位置。
//將position儲存在itemView的Tag中,以便點選時進行獲取
holder.itemView.setTag(position);
6.然後在onClick方法中進行position的獲取
/** * Method name : onClick * Specific description :繼承View.OnClickListener 介面,實現這個點選方法 *@param view *@return void */ @Override public void onClick(View view) { if (mOnItemClickListener != null) { view.getId(); //注意這裡使用getTag方法獲取position mOnItemClickListener.onItemClick(view,(int)view.getTag()); } }
7.最後暴露給外面的呼叫者,定義一個設定Listener的方法()
//最後暴露給外面的呼叫者,定義一個設定Listener的方法():
public void setOnItemClickListener(OnItemClickListener listener) {
this.mOnItemClickListener = listener;
}
8.在activity中用:
(每次刪除item,都會重新載入一次onBindViewHolder()方法,重新排布一下子item的position)
mData.remove(pos); mSampleWordsAdapter.notifyItemRemoved(viewHolder.getAdapterPosition()); //每次刪除item,都會重新載入一次onBindViewHolder()方法,重新排布一下子item的position //必須呼叫這行程式碼 mSampleWordsAdapter.notifyItemRangeChanged(pos,mData.size());