viewHolder.getAdapterPosition() 总是 returns -1

viewHolder.getAdapterPosition() always returns -1

出于某种原因我无法使用 holder.getAdapterPosition() 因为它总是 returns -1 但 holder.getLayoutPosition() returns 一个位置就好了。

我的 onCreateViewHolder:

@Override

public ViewHolder onCreateViewHolder(ViewGroup parent,
                                     int viewType) {
    // create a new view
    View v = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.my_item, parent, false);


    ViewHolder vh = new ViewHolder(this, v);
    return vh;
}

我的 ViewHolder 构造函数:

public ViewHolder(DirectoryListAdapter adapter, View linear) {
            super(linear);
            this.adapter = adapter;
            this.linear = (LinearLayout) linear;
            this.entryName = (TextView) linear.findViewById(R.id.item_name);
            this.entryImage = (ImageView) linear.findViewById(R.id.item_image);

}

我看得更远 getAdapterPosition 看起来像这样:

 public final int getAdapterPosition() {
            final ViewParent parent = itemView.getParent();
            if (!(parent instanceof RecyclerView)) {
                return -1;
            }
            final RecyclerView rv = (RecyclerView) parent;
            return rv.getAdapterPositionFor(this);
        }

基本上发生的事情是 ViewParent 为空。知道为什么会这样吗?

除此之外,我的回收商工作正常。

谢谢。

如果 parent 为 null,则意味着 ViewHolder 不是 RecyclerView 的子级,因此我们没有跟踪它的位置。布局位置为其布局时的最新位置。

在后续版本中,我们将扩展 getAdapterPosition 的范围。

这似乎不是新版本支持库 (22.1.0) 的问题。