回顧
在這篇文章中簡單介紹了RecyclerView 的使用。鏈接:RecyclerView簡單使用
定義接口
public interface ItemClickListener {
void Onclick(View view ,int position);
void OnLongClick(View view ,int position);
}
綁定接口到Adapter
- 定義屬性:
private ItemClickListener itemClickListener;
- 創建設置方法
public void setOnItemClickListener(ItemClickListener itemClickListener){
this.itemClickListener = itemClickListener;
}
- 在viewHolder中綁定事件
textView.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
if(itemClickListener!=null){
itemClickListener.Onclick(v,getPosition());
}
}
});
textView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
if(itemClickListener!=null){
itemClickListener.OnLongClick(v,getPosition());
}
return true;
}
});
使用
在activity或者fragment中將創建好的適配器對象調用方法:setOnItemClickListener(),傳入自定義的點擊事件,實現不同的功能。
gyRecyclerViewAdapter.setOnItemClickListener(new ItemClickListener(){
@Override
public void Onclick(View view, int position) {
Toast.makeText(context,"you click the item"+position,Toast.LENGTH_SHORT).show();
}
@Override
public void OnLongClick(View view, int position) {
Toast.makeText(context,"you click the item"+position +" for a long time!",Toast.LENGTH_SHORT).show();
}
});
補充
對Item的添加於刪除,都是通過
Adapter
提供的一些api
來實現的。常用的api
如下:
notifyItemChanged(int position) //通知位置position的Item的數據改變
notifyItemInserted(int) //通知位置position的Item的數據插入
notifyItemRemoved(int) //通知位置position的Item的數據移除
notifyItemRangeChanged(int positionStart, int itemCount) //通知從位置positionStart開始,有itemCount個Item的數據發生改變
notifyItemRangeInserted(int positionStart, int itemCount) //通知從位置positionStart開始,有itemCount個Item的數據插入
notifyItemRangeRemoved(int positionStart, int itemCount)//通知從位置positionStart開始,有itemCount個Item的數據移除
主要是使用Adapter
提供的notifyItemInserted(position)
和notifyItemRemoved(position)
方法,告知數據改變。
RecyclerView還支持添加動畫效果給Item的刪除與增加。下篇文章進行總結。