我如何知道每个item的id以便于我给他们设置点击事件
时间: 2024-03-24 09:39:26 浏览: 25
在 RecyclerView 中,每个 item 并没有一个唯一的标识符或 ID,但是可以通过其在数据源中的位置来唯一标识每个 item。
在 RecyclerView 的 Adapter 中,可以通过 `getItemId()` 方法来获取每个 item 的 ID,但是需要在 Adapter 中重写该方法,并返回每个 item 的唯一标识符。例如:
```java
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
// ...
@Override
public long getItemId(int position) {
// 返回每个 item 的唯一标识符,可以是数据源中该 item 的 ID
return mData.get(position).getId();
}
// ...
}
```
在上面的代码中,我们假设 `mData` 是 RecyclerView 的数据源,并且每个数据对象都有一个唯一的 ID。
如果想要为每个 item 中的控件设置点击事件,可以在 `onBindViewHolder()` 方法中为每个 item 中的控件设置 `OnClickListener`,并在 `OnClickListener` 中处理点击事件。例如:
```java
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
MyData data = mData.get(position);
holder.textView.setText(data.getText());
holder.button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 处理点击事件,可以通过 position 获取当前 item 的位置
int pos = holder.getAdapterPosition();
long id = getItemId(pos);
// ...
}
});
}
```
在上面的代码中,我们为每个 item 中的 button 设置了一个 `OnClickListener`,并在 `OnClickListener` 中处理点击事件。可以通过 `holder.getAdapterPosition()` 方法获取当前 item 的位置,通过 `getItemId(pos)` 方法获取当前 item 的 ID。