RecyclerView設定點選事件的一種方法
首先在Adapter裡面定義一個點選介面用於回撥
public interface Click{ void onItemClick(int position,View itemView); void onItemLongClick(int position,View itemView); }
定義一個介面引數和一個設定這個引數的Set方法
private Click onClick; public void setOnClick(Click click){ this.onClick=click; }
在adapter裡的onBindViewHolder中設定這個點選事件,其實就是在這裡監聽點選事件的,為每個item在點選的時候新增一個itemClick方法。
@Override public void onBindViewHolder(@NonNull final adapter.ViewHolder viewHolder, int i) { viewHolder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onClick.onItemClick(viewHolder.getLayoutPosition(),viewHolder.itemView); } }); viewHolder.itemView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { onClick.onItemLongClick(viewHolder.getLayoutPosition(),viewHolder.itemView); return true; } }); }
最後在需要的地方繼承這個介面,並且實現itemClick方法即可
public class DemoActivity extends AppCompatActivity implements adapter.Click{ adapter adapter=new adapter(); adapter.setOnClick(this); @Override public void onItemClick(int position, View itemView) { Toast.makeText(this,"點選",Toast.LENGTH_SHORT).show(); //點選事件 } @Override public void onItemLongClick(int position, View itemView) { Toast.makeText(this,"長按",Toast.LENGTH_SHORT).show(); //長按事件 } }