Skip to content

Commit

Permalink
BaseRecyclerViewAdapter:
Browse files Browse the repository at this point in the history
1, 优化属性及形参名称
2, 添加无动画刷新方法refAllWithNoAnim
3, 修复实体视图长按事件无效的问题
4, 调整方法位置
5, 优化方法访问权限
ScrollBarUtil:
1, 优化常量定义名称
ToastUtil:
1, 整体重构
2, 集成ContextUtil, 不在依赖外部Context
Other:
1, 集成ContextUtil, 不在依赖外部Context
  • Loading branch information
zuilintan committed May 7, 2020
1 parent 7845baa commit 3773f69
Show file tree
Hide file tree
Showing 9 changed files with 219 additions and 151 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ buildscript {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.6.2'
classpath 'com.android.tools.build:gradle:3.6.3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
Expand Down
2 changes: 1 addition & 1 deletion config.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ ext {
minSdk : 28,
targetSdk : 28,
versionCode : 1,
versionName : "1.0.6",
versionName : "1.0.7",

storeFile : 'C:\\SoftwareGreen\\DTP\\KeyStore\\CPY\\Android_O\\platform.keystore',
storePassword: 'android',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -172,11 +172,11 @@ public void dismiss() {

private void initParam(Window dialogWindow) {
dialogWindow.setLayout(mLayoutWidth > 0
? DensityUtil.dp2px(mActivityWeakReference.get(), mLayoutWidth)
: ScreenUtil.getScreenWidth(mActivityWeakReference.get())
- 2 * DensityUtil.dp2px(mActivityWeakReference.get(), mHorizontalMargin),
? DensityUtil.dp2px(mLayoutWidth)
: ScreenUtil.getScreenWidth()
- 2 * DensityUtil.dp2px(mHorizontalMargin),
mLayoutHeight > 0
? DensityUtil.dp2px(mActivityWeakReference.get(), mLayoutHeight)
? DensityUtil.dp2px(mLayoutHeight)
: WindowManager.LayoutParams.WRAP_CONTENT);
dialogWindow.setGravity(mGravity);
dialogWindow.setDimAmount(mDimAmount);
Expand Down
150 changes: 90 additions & 60 deletions library/src/main/java/com/lt/library/base/BaseRecyclerViewAdapter.java
Original file line number Diff line number Diff line change
Expand Up @@ -51,15 +51,15 @@ public abstract class BaseRecyclerViewAdapter<DS> extends RecyclerView.Adapter<B
private int mEntityViewId = setLayoutResId();
private int mExtrasViewId = -1;
private int mFooterViewId = -1;
private List<DS> mEntityDataSourceList;
private List<DS> mDataSourceList;
private boolean mIsHeaderFullSpan = true;
private boolean mIsFooterFullSpan = true;

public BaseRecyclerViewAdapter(List<DS> entityDataSourceList) {
if (Objects.isNull(mEntityDataSourceList)) {
mEntityDataSourceList = new ArrayList<>();
public BaseRecyclerViewAdapter(List<DS> dataSourceList) {
if (Objects.isNull(mDataSourceList)) {
mDataSourceList = new ArrayList<>();
} else {
mEntityDataSourceList.addAll(entityDataSourceList);
mDataSourceList.addAll(dataSourceList);
}
}

Expand Down Expand Up @@ -119,7 +119,7 @@ public void onBindViewHolder(@NonNull BaseViewHolder viewHolder, int position) {
} else if (viewHolder instanceof EntityViewHolder) {
int fixPosition = position - (mHeaderViewCount + mStatusViewCount);
viewHolder.itemView.setTag(fixPosition);
initEntityView((EntityViewHolder) viewHolder, mEntityDataSourceList.get(fixPosition), fixPosition);
initEntityView((EntityViewHolder) viewHolder, mDataSourceList.get(fixPosition), fixPosition);
} else if (viewHolder instanceof ExtrasViewHolder) {
initExtrasView((ExtrasViewHolder) viewHolder);
} else if (viewHolder instanceof FooterViewHolder) {
Expand All @@ -135,7 +135,7 @@ public void onBindViewHolder(@NonNull BaseViewHolder viewHolder, int position, @
else {
if (viewHolder instanceof EntityViewHolder) {
int fixPosition = position - (mHeaderViewCount + mStatusViewCount);
updatePartView((EntityViewHolder) viewHolder, mEntityDataSourceList.get(fixPosition), fixPosition, payloads);
updatePartEntityView((EntityViewHolder) viewHolder, mDataSourceList.get(fixPosition), fixPosition, payloads);
}
}//更新item中特定View
}//绑定数据到视图(局部刷新)
Expand All @@ -161,16 +161,16 @@ public int getItemViewType(int position) {
public long getItemId(int position) {
long i;
if (hasStableIds() && isEntityView(position)) {
i = mEntityDataSourceList.get(position - (mHeaderViewCount + mStatusViewCount)).hashCode();
i = mDataSourceList.get(position - (mHeaderViewCount + mStatusViewCount)).hashCode();
} else {
i = RecyclerView.NO_ID;
}
return i;
}//为每个Item绑定唯一的Id需搭配adapter.setHasStableIds(true), 且要在setAdapter()前调用
}//为每个Item绑定唯一的Id, 需搭配adapter.setHasStableIds(true), 且要在setAdapter()前调用

@Override
public int getItemCount() {
int entityViewCount = getEntityViewCount();
int entityViewCount = size();
return mHeaderViewCount + mStatusViewCount + entityViewCount + mExtrasViewCount + mFooterViewCount;
}//获取Item的总数

Expand Down Expand Up @@ -252,29 +252,25 @@ private boolean isStatusView(int position) {
}

private boolean isEntityView(int position) {
int entityViewCount = getEntityViewCount();
int entityViewCount = size();
return entityViewCount > 0
&& mHeaderViewCount + mStatusViewCount <= position
&& position < mHeaderViewCount + mStatusViewCount + entityViewCount;
}

private boolean isExtrasView(int position) {
int entityViewCount = getEntityViewCount();
int entityViewCount = size();
return mExtrasViewCount > 0
&& mHeaderViewCount + mStatusViewCount + entityViewCount <= position
&& position < mHeaderViewCount + mStatusViewCount + entityViewCount + mExtrasViewCount;
}

private boolean isFooterView(int position) {
int entityViewCount = getEntityViewCount();
int entityViewCount = size();
return mFooterViewCount > 0
&& mHeaderViewCount + mStatusViewCount + entityViewCount + mExtrasViewCount <= position;
}

private int getEntityViewCount() {
return mEntityDataSourceList.size();
}

public void setHeaderView(@LayoutRes int layoutResId) {
setHeaderView(layoutResId, true);
}//设置HeaderView
Expand All @@ -301,14 +297,14 @@ public void remStatusView() {
public void addExtrasView(@LayoutRes int layoutResId) {
mExtrasViewId = layoutResId;
mExtrasViewCount = 1;
int entityViewCount = getEntityViewCount();
int entityViewCount = size();
notifyItemInserted(mHeaderViewCount + mStatusViewCount + entityViewCount);
}//添加ExtrasView

public void remExtrasView() {
mExtrasViewId = -1;
mExtrasViewCount = 0;
int entityViewCount = getEntityViewCount();
int entityViewCount = size();
notifyItemRemoved(mHeaderViewCount + mStatusViewCount + entityViewCount);
}//移除ExtrasView

Expand All @@ -320,32 +316,65 @@ public void setFooterView(@LayoutRes int layoutResId, boolean isFullSpan) {
mFooterViewId = layoutResId;
mIsFooterFullSpan = isFullSpan;
mFooterViewCount = 1;
int entityViewCount = getEntityViewCount();
int entityViewCount = size();
notifyItemInserted(mHeaderViewCount + mStatusViewCount + entityViewCount + mExtrasViewCount + mFooterViewCount);
}//设置FooterView

public void refAll(List<DS> entityDataSourceList) {
if (mEntityDataSourceList.isEmpty()) {
addAll(entityDataSourceList);
} else {
public void refAllWithNoAnim(List<DS> dataSourceList) {
if (!mDataSourceList.isEmpty()) {
mDataSourceList.clear();
}
mDataSourceList.addAll(dataSourceList);
notifyDataSetChanged();
}//刷新数据源集合, 并更新item, 性能较低, 无动画

public void refAll(List<DS> dataSourceList) {
if (!mDataSourceList.isEmpty()) {
remAll();
addAll(entityDataSourceList);
}
}//刷新数据源集合,并更新item
addAll(dataSourceList);
}//刷新数据源集合, 并更新item

public void remAll() {
int entityViewCount = getEntityViewCount();
mEntityDataSourceList.clear();
int entityViewCount = size();
mDataSourceList.clear();
notifyItemRangeRemoved(mHeaderViewCount + mStatusViewCount, entityViewCount);
notifyItemRangeChanged(mHeaderViewCount + mStatusViewCount, entityViewCount);
}//清空数据源集合,并更新item

public void addAll(List<DS> entityDataSourceList) {
int entityViewCount = getEntityViewCount();
mEntityDataSourceList.addAll(entityDataSourceList);
notifyItemRangeInserted(mHeaderViewCount + mStatusViewCount + entityViewCount, entityDataSourceList.size());
notifyItemRangeChanged(mHeaderViewCount + mStatusViewCount + entityViewCount, entityDataSourceList.size());
}//加载更多数据到数据源集合,并更新item
}//清空数据源集合, 并更新item

public void addAll(List<DS> dataSourceList) {
int entityViewCount = size();
mDataSourceList.addAll(dataSourceList);
notifyItemRangeInserted(mHeaderViewCount + mStatusViewCount + entityViewCount, dataSourceList.size());
notifyItemRangeChanged(mHeaderViewCount + mStatusViewCount + entityViewCount, dataSourceList.size());
}//添加数据源集合, 并更新item

public void ref(DS dataSource, int position) {
mDataSourceList.set(position, dataSource);
notifyItemChanged(mHeaderViewCount + mStatusViewCount + position);
}//刷新数据源, 并更新item

public void rem(int position) {
int entityViewCount = size();
mDataSourceList.remove(position);
notifyItemRemoved(mHeaderViewCount + mStatusViewCount + position);
notifyItemRangeChanged(mHeaderViewCount + mStatusViewCount + position, entityViewCount - position);
}//清空数据源, 并更新item

public void add(DS dataSource, int position) {
int entityViewCount = size();
mDataSourceList.add(position, dataSource);
notifyItemInserted(mHeaderViewCount + mStatusViewCount + position);
notifyItemRangeChanged(mHeaderViewCount + mStatusViewCount + position, entityViewCount - position);
}//添加数据源, 并更新item

public DS get(int position) {
return mDataSourceList.get(position);
}//获取数据源

public int size() {
return mDataSourceList.size();
}//获取数据源大小

public void setOnHeaderClickListener(OnHeaderClickListener onHeaderClickListener) {
mOnHeaderClickListener = onHeaderClickListener;
Expand All @@ -363,6 +392,14 @@ public void setOnStatusLongClickListener(OnStatusLongClickListener onStatusLongC
mOnStatusLongClickListener = onStatusLongClickListener;
}

public void setOnEntityClickListener(OnEntityClickListener onEntityClickListener) {
mOnEntityClickListener = onEntityClickListener;
}

public void setOnEntityLongClickListener(OnEntityLongClickListener onEntityLongClickListener) {
mOnEntityLongClickListener = onEntityLongClickListener;
}

public void setOnExtrasClickListener(OnExtrasClickListener onExtrasClickListener) {
mOnExtrasClickListener = onExtrasClickListener;
}
Expand All @@ -379,67 +416,59 @@ public void setOnFooterLongClickListener(OnFooterLongClickListener onFooterLongC
mOnFooterLongClickListener = onFooterLongClickListener;
}

public void setOnEntityClickListener(OnEntityClickListener onEntityClickListener) {
mOnEntityClickListener = onEntityClickListener;
}

public void setOnEntityLongClickListener(OnEntityLongClickListener onEntityLongClickListener) {
mOnEntityLongClickListener = onEntityLongClickListener;
}

protected abstract int setLayoutResId();

protected abstract void initHeaderView(HeaderViewHolder viewHolder);

protected abstract void initStatusView(StatusViewHolder viewHolder);

protected abstract void initExtrasView(ExtrasViewHolder viewHolder);
protected abstract void initEntityView(EntityViewHolder viewHolder, DS dataSource, int position);

protected abstract void initFooterView(FooterViewHolder viewHolder);
protected abstract void updatePartEntityView(EntityViewHolder viewHolder, DS dataSource, int position, List<Object> payloads);

protected abstract void initEntityView(EntityViewHolder viewHolder, DS dataSource, int position);
protected abstract void initExtrasView(ExtrasViewHolder viewHolder);

protected abstract void updatePartView(EntityViewHolder viewHolder, DS dataSource, int position, List<Object> payloads);
protected abstract void initFooterView(FooterViewHolder viewHolder);

protected abstract void freeView(EntityViewHolder viewHolder);

public interface OnHeaderClickListener {
void onHeaderClick(View view);
}

private interface OnHeaderLongClickListener {
public interface OnHeaderLongClickListener {
boolean onHeaderLongClick(View view);
}

public interface OnStatusClickListener {
void onStatusClick(View view);
}

private interface OnStatusLongClickListener {
public interface OnStatusLongClickListener {
boolean onStatusLongClick(View view);
}

public interface OnEntityClickListener {
void onEntityClick(View view, int position);
}

private interface OnEntityLongClickListener {
public interface OnEntityLongClickListener {
boolean onEntityLongClick(View view, int position);
}

public interface OnExtrasClickListener {
void onExtrasClick(View view);
}

private interface OnExtrasLongClickListener {
public interface OnExtrasLongClickListener {
boolean onExtrasLongClick(View view);
}

public interface OnFooterClickListener {
void onFooterClick(View view);
}

private interface OnFooterLongClickListener {
public interface OnFooterLongClickListener {
boolean onFooterLongClick(View view);
}

Expand Down Expand Up @@ -504,11 +533,11 @@ public boolean onLongClick(View view) {
return b;
}

public void setOnStatusClickListener(OnStatusClickListener onStatusClickListener) {
private void setOnStatusClickListener(OnStatusClickListener onStatusClickListener) {
mOnStatusClickListener = onStatusClickListener;
}

public void setOnStatusLongClickListener(OnStatusLongClickListener onStatusLongClickListener) {
private void setOnStatusLongClickListener(OnStatusLongClickListener onStatusLongClickListener) {
mOnStatusLongClickListener = onStatusLongClickListener;
}
}
Expand All @@ -520,6 +549,7 @@ protected static class EntityViewHolder extends BaseViewHolder implements View.O
private EntityViewHolder(@NonNull View itemView) {
super(itemView);
itemView.setOnClickListener(this);
itemView.setOnLongClickListener(this);
}

@Override
Expand Down Expand Up @@ -552,7 +582,7 @@ private void setOnEntityClickListener(OnEntityClickListener onEntityClickListene
mOnEntityClickListener = onEntityClickListener;
}

public void setOnEntityLongClickListener(OnEntityLongClickListener onEntityLongClickListener) {
private void setOnEntityLongClickListener(OnEntityLongClickListener onEntityLongClickListener) {
mOnEntityLongClickListener = onEntityLongClickListener;
}
}
Expand Down Expand Up @@ -583,11 +613,11 @@ public boolean onLongClick(View view) {
return b;
}

public void setOnExtrasClickListener(OnExtrasClickListener onExtrasClickListener) {
private void setOnExtrasClickListener(OnExtrasClickListener onExtrasClickListener) {
mOnExtrasClickListener = onExtrasClickListener;
}

public void setOnExtrasLongClickListener(OnExtrasLongClickListener onExtrasLongClickListener) {
private void setOnExtrasLongClickListener(OnExtrasLongClickListener onExtrasLongClickListener) {
mOnExtrasLongClickListener = onExtrasLongClickListener;
}
}
Expand Down Expand Up @@ -618,11 +648,11 @@ public boolean onLongClick(View view) {
return b;
}

public void setOnFooterClickListener(OnFooterClickListener onFooterClickListener) {
private void setOnFooterClickListener(OnFooterClickListener onFooterClickListener) {
mOnFooterClickListener = onFooterClickListener;
}

public void setOnFooterLongClickListener(OnFooterLongClickListener onFooterLongClickListener) {
private void setOnFooterLongClickListener(OnFooterLongClickListener onFooterLongClickListener) {
mOnFooterLongClickListener = onFooterLongClickListener;
}
}
Expand Down
Loading

0 comments on commit 3773f69

Please sign in to comment.