diff --git a/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java b/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java index 428efda36..cd75fb463 100644 --- a/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java +++ b/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java @@ -248,6 +248,7 @@ public final class TaskListFragment extends InjectingFragment taskListViewModel.getValue()) : new PagedListRecyclerAdapter( taskAdapter, + recyclerView, viewHolderFactory, this, actionModeProvider, diff --git a/app/src/main/java/org/tasks/tasklist/ManualSortRecyclerAdapter.java b/app/src/main/java/org/tasks/tasklist/ManualSortRecyclerAdapter.java index 2da160348..ea0ee2126 100644 --- a/app/src/main/java/org/tasks/tasklist/ManualSortRecyclerAdapter.java +++ b/app/src/main/java/org/tasks/tasklist/ManualSortRecyclerAdapter.java @@ -31,11 +31,12 @@ public class ManualSortRecyclerAdapter extends TaskListRecyclerAdapter { public ManualSortRecyclerAdapter( TaskAdapter adapter, - RecyclerView recyclerView, ViewHolderFactory viewHolderFactory, + RecyclerView recyclerView, + ViewHolderFactory viewHolderFactory, TaskListFragment taskList, ActionModeProvider actionModeProvider, List list) { - super(adapter, viewHolderFactory, taskList, actionModeProvider); + super(adapter, recyclerView, viewHolderFactory, taskList, actionModeProvider); this.list = list; itemTouchHelperCallback = new ItemTouchHelperCallback(adapter, this, this::drainQueue); new ItemTouchHelper(itemTouchHelperCallback).attachToRecyclerView(recyclerView); diff --git a/app/src/main/java/org/tasks/tasklist/PagedListRecyclerAdapter.java b/app/src/main/java/org/tasks/tasklist/PagedListRecyclerAdapter.java index db71ff97b..1544a706e 100644 --- a/app/src/main/java/org/tasks/tasklist/PagedListRecyclerAdapter.java +++ b/app/src/main/java/org/tasks/tasklist/PagedListRecyclerAdapter.java @@ -3,6 +3,7 @@ package org.tasks.tasklist; import androidx.paging.AsyncPagedListDiffer; import androidx.paging.PagedList; import androidx.recyclerview.widget.AsyncDifferConfig; +import androidx.recyclerview.widget.RecyclerView; import com.todoroo.astrid.activity.TaskListFragment; import com.todoroo.astrid.adapter.TaskAdapter; import java.util.List; @@ -14,11 +15,12 @@ public class PagedListRecyclerAdapter extends TaskListRecyclerAdapter { public PagedListRecyclerAdapter( TaskAdapter adapter, + RecyclerView recyclerView, ViewHolderFactory viewHolderFactory, TaskListFragment taskList, ActionModeProvider actionModeProvider, List list) { - super(adapter, viewHolderFactory, taskList, actionModeProvider); + super(adapter, recyclerView, viewHolderFactory, taskList, actionModeProvider); differ = new AsyncPagedListDiffer<>( diff --git a/app/src/main/java/org/tasks/tasklist/TaskListRecyclerAdapter.java b/app/src/main/java/org/tasks/tasklist/TaskListRecyclerAdapter.java index 9d7d69771..1cb5c5580 100644 --- a/app/src/main/java/org/tasks/tasklist/TaskListRecyclerAdapter.java +++ b/app/src/main/java/org/tasks/tasklist/TaskListRecyclerAdapter.java @@ -1,11 +1,13 @@ package org.tasks.tasklist; import android.os.Bundle; +import android.view.View; import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.view.ActionMode; import androidx.fragment.app.FragmentActivity; +import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.ListUpdateCallback; import androidx.recyclerview.widget.RecyclerView; import com.google.common.primitives.Longs; @@ -15,6 +17,7 @@ import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.GtasksFilter; import com.todoroo.astrid.utility.Flags; import java.util.List; +import java.util.Objects; import org.tasks.data.TaskContainer; import org.tasks.intents.TaskIntents; @@ -25,6 +28,7 @@ public abstract class TaskListRecyclerAdapter extends RecyclerView.Adapter 0 && firstChild != null) { + layoutManager.scrollToPositionWithOffset(firstChildPosition - 1, firstChild.getTop()); + } else if (firstChildPosition >= 0) { + layoutManager.scrollToPosition(firstChildPosition); + } } @Override