Skip to content

Commit 79acf9b

Browse files
author
uis
committed
fixed StackAdapter数据刷新显示缓存问题
1 parent 1488917 commit 79acf9b

2 files changed

Lines changed: 16 additions & 22 deletions

File tree

stacklayout/src/main/java/com/uis/stackview/StackHelper.java

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -73,22 +73,20 @@ void unbindLayout() {
7373
void measureChild(int width,int height){
7474
if(getItemCount() > 0 ){
7575
int size = layout.getRealStackSize();
76-
if(originX.isEmpty()) {
77-
float stackSpaces = 0;
78-
everyHeight = height - layout.getPaddingTop() - layout.getPaddingBottom();
79-
originX.add(layout.stackEdge);
80-
int padX = layout.stackPadX;
81-
if(padX*(size-1) > layout.stackSpace){
82-
padX = 0;
83-
}
84-
for (int i = 1; i < size; i++) {
85-
int stackSpace = (int)((layout.stackSpace-padX*(size-1-i))*Math.pow(layout.stackZoomX,(size-1-i)));
86-
stackSpaces += stackSpace;
87-
originX.add(originX.get(i - 1) + stackSpace);
88-
}
89-
everyWidth = width - layout.getPaddingLeft() - layout.getPaddingRight() - (int)stackSpaces - 2 * layout.stackEdge;
90-
mMaxDistance = everyWidth / 3;
76+
float stackSpaces = 0;
77+
everyHeight = height - layout.getPaddingTop() - layout.getPaddingBottom();
78+
originX.add(layout.stackEdge);
79+
int padX = layout.stackPadX;
80+
if(padX*(size-1) > layout.stackSpace){
81+
padX = 0;
82+
}
83+
for (int i = 1; i < size; i++) {
84+
int stackSpace = (int)((layout.stackSpace-padX*(size-1-i))*Math.pow(layout.stackZoomX,(size-1-i)));
85+
stackSpaces += stackSpace;
86+
originX.add(originX.get(i - 1) + stackSpace);
9187
}
88+
everyWidth = width - layout.getPaddingLeft() - layout.getPaddingRight() - (int)stackSpaces - 2 * layout.stackEdge;
89+
mMaxDistance = everyWidth / 3;
9290
int childSize = layout.getChildCount();
9391
if(childSize <= 0) {
9492
needRelayout = true;
@@ -154,7 +152,8 @@ void onItemClicked(){
154152

155153
void notifyDataChanged(){
156154
if(layout != null){
157-
layout.requestLayout();
155+
layout.removeAllViews();
156+
weakViews.clear();
158157
}
159158
}
160159

@@ -523,8 +522,6 @@ boolean filterClick(){
523522

524523
static void log(String msg){
525524
StackTraceElement element = Thread.currentThread().getStackTrace()[3];
526-
Log.e("StackLayout", String.format("%1$s:%2$s(%3$s):%4$s", element.getClassName(),
527-
element.getMethodName(), element.getLineNumber(), msg));
528-
525+
Log.e("StackLayout", String.format("%1$s:%2$s(%3$s):%4$s", element.getClassName(),element.getMethodName(), element.getLineNumber(), msg));
529526
}
530527
}

stacklayout/src/main/java/com/uis/stackview/StackLayout.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,6 @@ public StackAdapter getAdapter(){
130130
}
131131

132132
public void notifyDataChanged(){
133-
removeAllViewsInLayout();
134133
stackHelper.notifyDataChanged();
135134
}
136135

@@ -156,7 +155,6 @@ public void setLooperDelay(int mills){
156155

157156
@Override
158157
public boolean onInterceptTouchEvent(MotionEvent event) {
159-
// stackHelper.log("act="+event.getActionMasked());
160158
int action = event.getActionMasked();
161159
switch (action) {
162160
case MotionEvent.ACTION_DOWN:
@@ -175,7 +173,6 @@ public boolean onInterceptTouchEvent(MotionEvent event) {
175173

176174
@Override
177175
public boolean onTouchEvent(MotionEvent event) {
178-
// stackHelper.log("act="+event.getActionMasked());
179176
if(adapter == null || adapter.getItemCount() == 0){
180177
return false;
181178
}

0 commit comments

Comments
 (0)