回顾
在这篇文章中简单介绍了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的删除与增加。下篇文章进行总结。