mirror of
https://github.com/alibaba/vlayout.git
synced 2026-10-17 05:07:37 +08:00
Merge pull request #260 from mxpazyj/master
修复 子Adapter复写onBindViewHolder(VH holder, int position, List<Object> p…
This commit is contained in:
@@ -107,7 +107,7 @@ public class DelegateAdapter extends VirtualLayoutAdapter<RecyclerView.ViewHolde
|
||||
if (mHasConsistItemType) {
|
||||
Adapter adapter = mItemTypeAry.get(viewType);
|
||||
if (adapter != null) {
|
||||
return adapter.onCreateViewHolder(parent, viewType);
|
||||
return adapter.onCreateViewHolder(parent, viewType);
|
||||
}
|
||||
|
||||
return null;
|
||||
@@ -120,7 +120,7 @@ public class DelegateAdapter extends VirtualLayoutAdapter<RecyclerView.ViewHolde
|
||||
int index = (int)cantorReverse[1];
|
||||
int subItemType = (int)cantorReverse[0];
|
||||
|
||||
Adapter adapter = findAdapterByIndex(index);
|
||||
Adapter adapter = findAdapterByIndex(index);
|
||||
if (adapter == null) {
|
||||
return null;
|
||||
}
|
||||
@@ -131,13 +131,20 @@ public class DelegateAdapter extends VirtualLayoutAdapter<RecyclerView.ViewHolde
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
|
||||
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position, List<Object> payloads) {
|
||||
super.onBindViewHolder(holder, position, payloads);
|
||||
Pair<AdapterDataObserver, Adapter> pair = findAdapterByPosition(position);
|
||||
if (pair == null) {
|
||||
return;
|
||||
}
|
||||
pair.second.onBindViewHolder(holder, position - pair.first.mStartPosition, payloads);
|
||||
pair.second.onBindViewHolderWithOffset(holder, position - pair.first.mStartPosition, position, payloads);
|
||||
|
||||
pair.second.onBindViewHolder(holder, position - pair.first.mStartPosition);
|
||||
pair.second.onBindViewHolderWithOffset(holder, position - pair.first.mStartPosition, position);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -415,12 +422,11 @@ public class DelegateAdapter extends VirtualLayoutAdapter<RecyclerView.ViewHolde
|
||||
mIndexAry.clear();
|
||||
}
|
||||
|
||||
public int getAdaptersCount(){
|
||||
public int getAdaptersCount() {
|
||||
return mAdapters == null ? 0 : mAdapters.size();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param absoultePosition
|
||||
* @return the relative position in sub adapter by the absoulte position in DelegaterAdapter. Return -1 if no sub adapter founded.
|
||||
*/
|
||||
@@ -497,7 +503,7 @@ public class DelegateAdapter extends VirtualLayoutAdapter<RecyclerView.ViewHolde
|
||||
return mIndex;
|
||||
}
|
||||
|
||||
private boolean updateLayoutHelper(){
|
||||
private boolean updateLayoutHelper() {
|
||||
if (mIndex < 0) {
|
||||
return false;
|
||||
}
|
||||
@@ -569,6 +575,14 @@ public class DelegateAdapter extends VirtualLayoutAdapter<RecyclerView.ViewHolde
|
||||
}
|
||||
notifyItemRangeChanged(mStartPosition + positionStart, itemCount);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onItemRangeChanged(int positionStart, int itemCount, Object payload) {
|
||||
if (!updateLayoutHelper()) {
|
||||
return;
|
||||
}
|
||||
notifyItemRangeChanged(mStartPosition + positionStart, itemCount, payload);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -643,6 +657,10 @@ public class DelegateAdapter extends VirtualLayoutAdapter<RecyclerView.ViewHolde
|
||||
protected void onBindViewHolderWithOffset(VH holder, int position, int offsetTotal) {
|
||||
|
||||
}
|
||||
|
||||
protected void onBindViewHolderWithOffset(VH holder, int position, int offsetTotal, List<Object> payloads) {
|
||||
onBindViewHolderWithOffset(holder, position, offsetTotal);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user