Merge pull request #260 from mxpazyj/master

修复 子Adapter复写onBindViewHolder(VH holder, int position, List<Object> p…
This commit is contained in:
Xiaolong Hong
2017-12-18 10:43:14 +08:00
committed by GitHub
@@ -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);
}
}
}