onItemClickListener 介面實作
- 有時後會遇到某些功能實作之後沒有提供ItemClick的方法,這時候就要自己實作ItemClick介面來達成目的了!!
舉RecyclerView的例子
- RecyclerView沒辦法直接實作.setOnItemClickListener
- 所以不能像ListView一樣,取得使用者點到的那一個item
- 手動實作itemClick可解決這個問題
如何實作?
- 第一步 - 在RecyclerViewAdapter內實作介面
public interface onItemClickListener
{
void onItemClick(View view,int position);
}
private onItemClickListener onItemClickListener;
public void setOnItemClickListener(onItemClickListener onItemClickListener)
{
this.onItemClickListener = onItemClickListener;
}
- 第二步 - 在onBindViewHolder透過OnClickListener達到目的
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囉
RecycleViewAdapter mAdapter = new RecycleViewAdapter(this);
mAdapter.setOnItemClickListener(new RecycleViewAdapter.onItemClickListener()
{
@Override
public void onItemClick(View view, int position)
{
Log.d("MYLOG", "onItemClick: "+position);
}
});
大功告成!!