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) 的问题。
出于某种原因我无法使用 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) 的问题。