RecyclerView中添加點擊事件

回顧

在這篇文章中簡單介紹了RecyclerView 的使用。鏈接:RecyclerView簡單使用


定義接口

public interface ItemClickListener {
    void Onclick(View view ,int position);
    void OnLongClick(View view ,int position);
}

綁定接口到Adapter


  1. 定義屬性:
private ItemClickListener itemClickListener;
  1. 創建設置方法
 public void setOnItemClickListener(ItemClickListener itemClickListener){
        this.itemClickListener = itemClickListener;
    }
  1. 在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的刪除與增加。下篇文章進行總結。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章