onItemClickListener.onItemClick(v, position);position标红
时间: 2024-03-13 10:45:38 浏览: 131
如果 `position` 标红,这通常意味着它未被正确地定义或初始化。在这种情况下,你需要确保你已经正确地声明了 `position` 变量,并给它一个初始值。通常在 `onItemClickListener` 的回调方法中,`position` 是作为参数传递进来的,你可以直接使用该参数来获取点击的位置。如果你想在回调方法之外使用 `position`,你可以将其声明为一个类变量并在回调方法中赋值。例如:
```
public class MyAdapter extends RecyclerView.Adapter<MyViewHolder> {
private List<MyData> mDataList;
private int mSelectedPosition = -1; // 声明 position 变量并初始化为 -1
public MyAdapter(List<MyData> dataList) {
mDataList = dataList;
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
MyData data = mDataList.get(position);
holder.bindData(data, position, mSelectedPosition);
holder.itemView.setOnClickListener(v -> {
mSelectedPosition = position; // 给 position 变量赋值
notifyDataSetChanged();
onItemClickListener.onItemClick(v, position);
});
}
}
```
在上述代码中,我们将 `mSelectedPosition` 声明为类变量,并初始化为 -1。当用户点击某个 item 时,我们将 `position` 赋值给 `mSelectedPosition`,然后调用 `notifyDataSetChanged()` 方法来更新视图。在 `MyViewHolder` 的 `bindData()` 方法中,我们将 `position` 和 `mSelectedPosition` 一起传递给视图。这样,你就可以在回调方法以外的地方使用 `mSelectedPosition` 变量了。
阅读全文