Lines Matching refs:op

95             UpdateOp op = mPendingUpdates.get(i);
96 switch (op.cmd) {
98 applyAdd(op);
101 applyRemove(op);
104 applyUpdate(op);
107 applyMove(op);
126 private void applyMove(UpdateOp op) {
129 postponeAndUpdateViewHolders(op);
132 private void applyRemove(UpdateOp op) {
133 int tmpStart = op.positionStart;
135 int tmpEnd = op.positionStart + op.itemCount;
137 for (int position = op.positionStart; position < tmpEnd; position++) {
160 // Create UpdateOp op and dispatch it to LayoutManager.
175 if (tmpCount != op.itemCount) { // all 1 effect
176 recycleUpdateOp(op);
177 op = obtainUpdateOp(UpdateOp.REMOVE, tmpStart, tmpCount, null);
180 dispatchAndUpdateViewHolders(op);
182 postponeAndUpdateViewHolders(op);
186 private void applyUpdate(UpdateOp op) {
187 int tmpStart = op.positionStart;
189 int tmpEnd = op.positionStart + op.itemCount;
191 for (int position = op.positionStart; position < tmpEnd; position++) {
196 op.payload);
205 op.payload);
214 if (tmpCount != op.itemCount) { // all 1 effect
215 Object payload = op.payload;
216 recycleUpdateOp(op);
217 op = obtainUpdateOp(UpdateOp.UPDATE, tmpStart, tmpCount, payload);
220 dispatchAndUpdateViewHolders(op);
222 postponeAndUpdateViewHolders(op);
226 private void dispatchAndUpdateViewHolders(UpdateOp op) {
228 // traverse all postpones and revert their changes on this op if necessary, apply updated
229 // dispatch to them since now they are after this op.
230 if (op.cmd == UpdateOp.ADD || op.cmd == UpdateOp.MOVE) {
234 Log.d(TAG, "dispatch (pre)" + op);
244 int tmpStart = updatePositionWithPostponed(op.positionStart, op.cmd);
246 Log.d(TAG, "pos:" + op.positionStart + ",updatedPos:" + tmpStart);
249 int offsetPositionForPartial = op.positionStart;
251 switch (op.cmd) {
259 throw new IllegalArgumentException("op should be remove or update." + op);
261 for (int p = 1; p < op.itemCount; p++) {
262 final int pos = op.positionStart + (positionMultiplier * p);
263 int updatedPos = updatePositionWithPostponed(pos, op.cmd);
268 switch (op.cmd) {
280 UpdateOp tmp = obtainUpdateOp(op.cmd, tmpStart, tmpCnt, op.payload);
286 if (op.cmd == UpdateOp.UPDATE) {
293 Object payload = op.payload;
294 recycleUpdateOp(op);
296 UpdateOp tmp = obtainUpdateOp(op.cmd, tmpStart, tmpCnt, payload);
313 void dispatchFirstPassAndUpdateViewHolders(UpdateOp op, int offsetStart) {
314 mCallback.onDispatchFirstPass(op);
315 switch (op.cmd) {
317 mCallback.offsetPositionsForRemovingInvisible(offsetStart, op.itemCount);
320 mCallback.markViewHoldersUpdated(offsetStart, op.itemCount, op.payload);
349 // op moved to left, move it right to revert
357 // op was moved right, move left to revert
395 UpdateOp op = mPostponedList.get(i);
396 if (op.cmd == UpdateOp.MOVE) {
397 if (op.itemCount == op.positionStart || op.itemCount < 0) {
399 recycleUpdateOp(op);
401 } else if (op.itemCount <= 0) {
403 recycleUpdateOp(op);
412 UpdateOp op = mPostponedList.get(i);
413 if (op.cmd == UpdateOp.MOVE) {
414 if (findPositionOffset(op.itemCount, i + 1) == position) {
417 } else if (op.cmd == UpdateOp.ADD) {
419 final int end = op.positionStart + op.itemCount;
420 for (int pos = op.positionStart; pos < end; pos++) {
430 private void applyAdd(UpdateOp op) {
431 postponeAndUpdateViewHolders(op);
434 private void postponeAndUpdateViewHolders(UpdateOp op) {
436 Log.d(TAG, "postponing " + op);
438 mPostponedList.add(op);
439 switch (op.cmd) {
441 mCallback.offsetPositionsForAdd(op.positionStart, op.itemCount);
444 mCallback.offsetPositionsForMove(op.positionStart, op.itemCount);
447 mCallback.offsetPositionsForRemovingLaidOutOrNewView(op.positionStart,
448 op.itemCount);
451 mCallback.markViewHoldersUpdated(op.positionStart, op.itemCount, op.payload);
454 throw new IllegalArgumentException("Unknown update op type for " + op);
473 UpdateOp op = mPostponedList.get(i);
474 if (op.cmd == UpdateOp.MOVE) {
475 if (op.positionStart == position) {
476 position = op.itemCount;
478 if (op.positionStart < position) {
481 if (op.itemCount <= position) {
485 } else if (op.positionStart <= position) {
486 if (op.cmd == UpdateOp.REMOVE) {
487 if (position < op.positionStart + op.itemCount) {
490 position -= op.itemCount;
491 } else if (op.cmd == UpdateOp.ADD) {
492 position += op.itemCount;
540 return false; // no-op
559 UpdateOp op = mPendingUpdates.get(i);
560 switch (op.cmd) {
562 mCallback.onDispatchSecondPass(op);
563 mCallback.offsetPositionsForAdd(op.positionStart, op.itemCount);
566 mCallback.onDispatchSecondPass(op);
567 mCallback.offsetPositionsForRemovingInvisible(op.positionStart, op.itemCount);
570 mCallback.onDispatchSecondPass(op);
571 mCallback.markViewHoldersUpdated(op.positionStart, op.itemCount, op.payload);
574 mCallback.onDispatchSecondPass(op);
575 mCallback.offsetPositionsForMove(op.positionStart, op.itemCount);
589 UpdateOp op = mPendingUpdates.get(i);
590 switch (op.cmd) {
592 if (op.positionStart <= position) {
593 position += op.itemCount;
597 if (op.positionStart <= position) {
598 final int end = op.positionStart + op.itemCount;
602 position -= op.itemCount;
606 if (op.positionStart == position) {
607 position = op.itemCount; //position end
609 if (op.positionStart < position) {
612 if (op.itemCount <= position) {
687 UpdateOp op = (UpdateOp) o;
689 if (cmd != op.cmd) {
694 if (itemCount == op.positionStart && positionStart == op.itemCount) {
698 if (itemCount != op.itemCount) {
701 if (positionStart != op.positionStart) {
705 if (!payload.equals(op.payload)) {
708 } else if (op.payload != null) {
726 UpdateOp op = mUpdateOpPool.acquire();
727 if (op == null) {
728 op = new UpdateOp(cmd, positionStart, itemCount, payload);
730 op.cmd = cmd;
731 op.positionStart = positionStart;
732 op.itemCount = itemCount;
733 op.payload = payload;
735 return op;
739 public void recycleUpdateOp(UpdateOp op) {
741 op.payload = null;
742 mUpdateOpPool.release(op);