onItemClickListener for RecyclerView

onItemClickListener 介面實作

  • 有時後會遇到某些功能實作之後沒有提供ItemClick的方法,這時候就要自己實作ItemClick介面來達成目的了!!

舉RecyclerView的例子

  • RecyclerView沒辦法直接實作.setOnItemClickListener
  • 所以不能像ListView一樣,取得使用者點到的那一個item
  • 手動實作itemClick可解決這個問題

如何實作?

  • 第一步 - 在RecyclerViewAdapter內實作介面
1
2
3
4
5
6
7
8
9
public interface onItemClickListener
{
void onItemClick(View view,int position);
}
private onItemClickListener onItemClickListener;
public void setOnItemClickListener(onItemClickListener onItemClickListener)
{
this.onItemClickListener = onItemClickListener;
}
  • 第二步 - 在onBindViewHolder透過OnClickListener達到目的

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    if(onItemClickListener!=null)
    {
    holder.itemView.setOnClickListener(new View.OnClickListener()
    {
    @Override
    public void onClick(View v)
    {
    int layoutPos = holder.getLayoutPosition();
    onItemClickListener.onItemClick(v,position);
    }
    });
    }
  • 第三步 - RecyclerViewAdapter的部份完成之後,回到MainActivity就可以實作.onItemClickListener囉

    1
    2
    3
    4
    5
    6
    7
    8
    9
    RecycleViewAdapter mAdapter = new RecycleViewAdapter(this);
    mAdapter.setOnItemClickListener(new RecycleViewAdapter.onItemClickListener()
    {
    @Override
    public void onItemClick(View view, int position)
    {
    Log.d("MYLOG", "onItemClick: "+position);
    }
    });

大功告成!!

文章目錄
  1. 1. onItemClickListener 介面實作
    1. 1.1. 舉RecyclerView的例子
    2. 1.2. 如何實作?
    3. 1.3. 大功告成!!
|