Z jakiegoś powodu nie jestem w stanie użyć holder.getAdapterPosition()
, ponieważ zawsze zwraca -1, ale holder.getLayoutPosition()
zwraca pozycję dobrze.viewHolder.getAdapterPosition() zawsze zwraca -1
Moja 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;
}
My ViewHolder konstruktor:
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);
}
spojrzałem nieco dalej i getAdapterPosition
wygląda następująco:
public final int getAdapterPosition() {
final ViewParent parent = itemView.getParent();
if (!(parent instanceof RecyclerView)) {
return -1;
}
final RecyclerView rv = (RecyclerView) parent;
return rv.getAdapterPositionFor(this);
}
Zasadniczo, co się dzieje, jest to, że ViewParent ma wartość null. Jakiś pomysł, dlaczego tak się dzieje?
Poza tym mój recykler działa dobrze.
Dzięki.
Czy robię coś złego? powinienem ustawić rodzica? – casolorz