Android 如何从onCreateViewHolder获取位置

Android 如何从onCreateViewHolder获取位置,android,android-recyclerview,Android,Android Recyclerview,我有一个RecylerView适配器,在其中处理onCreateViewHolder方法中的onClick,但是我无法找到获取当前位置的方法。我当前的方法如下所示: @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View itemView = LayoutInflater.from(parent.getContext())

我有一个RecylerView适配器,在其中处理onCreateViewHolder方法中的onClick,但是我无法找到获取当前位置的方法。我当前的方法如下所示:

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View itemView = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.card_small, parent, false);

        return new ViewHolder(itemView, new ViewHolder.IViewHolderClicks() {
            @Override
            public void onImage(ImageView image) {
                // Need the position for logic in here
                // for example, myArrayList.get(position);
            }
        });
    }
有人知道如何从onCreateViewHolder中访问当前位置吗?

onCreateViewHolder()
不是存储位置的合适位置。当ViewHolder被回收时,您将无法再次调用
onCreateViewHolder()
,因此在ViewHolder被回收时,您将没有机会“修复”该位置


您可以在
onBindViewHolder()
中执行此操作,它将位置作为其参数之一提供给您,并在每次回收ViewHolder时调用该位置。

在onClick处理程序中,调用ViewHolder.getAdapterPosition()


如果我将位置存储在一个类成员变量中,并在onBindViewHolder方法中分配它,这是一个可靠的方法吗?这就是我所倾向的,我将尝试一下,看看它是否有效!干杯不要在onBindViewHolder中添加监听器,因为在不重新绑定视图的情况下,该位置可能会更改。我以前尝试过此操作,但总是出现一个错误,即ViewHolder可能尚未初始化。能否将IViewHolderClicks()设为setter而不是构造函数参数?抱歉,我忘了更新!但我做了一个二传手,效果很好!我得到了1号职位,请帮帮我
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View itemView = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.card_small, parent, false);

    final ViewHolder vh = ViewHolder(itemView, new ViewHolder.IViewHolderClicks() {
        @Override
        public void onImage(ImageView image) {
            int position = vh.getAdapterPosition();
        }
    });
    return vh;
}