0
- 正しい位置の値を取得する方法。
- RecyclerViewのアダプタでnotifyDataSetChangedが2-3回呼び出された後、onBindViewHolderの位置が変更されています。
- しかし、スクロールの位置は同じです。
getItemViewTypeで別のビューを設定しています。クリックの行にRecyclerViewは、2-3のnotifyDataSetChangedが呼び出された後にonBindViewHolderの位置値を変更します。
@Override
public int getItemViewType(int position) {
if (totalCartSize > productServiceSize) {
if (position < productServiceSize) {
return PRODUCT_SERVICE_TYPE;
} else if (position >= productServiceSize && position < totalCartSize) {
return PROJECT_TYPE;
}
} else {
return PRODUCT_SERVICE_TYPE;
}
return super.getItemViewType(position);
}
私は再びサービスを押すことで、さわやかためcallBackListenerを持っていますが、コールバックで私が原因誤った位置onBindViewholder間違った値を取得しています。
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if (holder instanceof ProductServiceViewHolder) {
setProductServiceView((ProductServiceViewHolder) holder, holder.getAdapterPosition());
} else if (holder instanceof ProjectViewHolder) {
setProjectView((ProjectViewHolder) holder, position);
}
}
- が
- アビシェーク
こんにちはヒューゴ、私の見解はまだ同じ位置ですが、私は別のポジション価値を得ています。 – abhishek
@abhishek –
@Hugo Gresse私はここで同様の問題を抱えている可能性があります:http://stackoverflow.com/questions/43531900/android-how-to-fix-recyclerview-onbindviewholder私はどのように修正するかに関する考えやアイデアを感謝します。 – AJW