diff --git a/src/googleplay/java/com/todoroo/astrid/gtasks/OrderedMetadataListFragmentHelper.java b/src/googleplay/java/com/todoroo/astrid/gtasks/OrderedMetadataListFragmentHelper.java index 3d58a0932..ad383dfb2 100644 --- a/src/googleplay/java/com/todoroo/astrid/gtasks/OrderedMetadataListFragmentHelper.java +++ b/src/googleplay/java/com/todoroo/astrid/gtasks/OrderedMetadataListFragmentHelper.java @@ -55,7 +55,7 @@ class OrderedMetadataListFragmentHelper { } TaskAdapter createTaskAdapter(Context context, TodorooCursor cursor) { - taskAdapter = new DraggableTaskAdapter(context, fragment, cursor); + taskAdapter = new DraggableTaskAdapter(context, cursor); taskAdapter.setOnCompletedTaskListener(this::setCompletedForItemAndSubtasks); @@ -64,8 +64,8 @@ class OrderedMetadataListFragmentHelper { private final class DraggableTaskAdapter extends TaskAdapter { - private DraggableTaskAdapter(Context context, TaskListFragment activity, Cursor c) { - super(context, activity, c); + private DraggableTaskAdapter(Context context, Cursor c) { + super(context, c); } @Override diff --git a/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java b/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java index 15459341d..a78b88cd7 100644 --- a/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java +++ b/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java @@ -433,7 +433,7 @@ public class TaskListFragment extends InjectingFragment implements } protected TaskAdapter createTaskAdapter(TodorooCursor cursor) { - return new TaskAdapter(context, this, cursor); + return new TaskAdapter(context, cursor); } public static final String TAGS_METADATA_JOIN = "for_tags"; //$NON-NLS-1$ @@ -455,7 +455,7 @@ public class TaskListFragment extends InjectingFragment implements // set up list adapters taskAdapter = createTaskAdapter(currentCursor); - recyclerAdapter = new TaskListRecyclerAdapter(context, taskAdapter, viewHolderFactory); + recyclerAdapter = new TaskListRecyclerAdapter(context, taskAdapter, viewHolderFactory, this); } public Property[] taskProperties() { diff --git a/src/main/java/com/todoroo/astrid/adapter/TaskAdapter.java b/src/main/java/com/todoroo/astrid/adapter/TaskAdapter.java index 248f0e018..223b2a3ae 100644 --- a/src/main/java/com/todoroo/astrid/adapter/TaskAdapter.java +++ b/src/main/java/com/todoroo/astrid/adapter/TaskAdapter.java @@ -23,15 +23,13 @@ import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.TaskAttachment; import com.todoroo.astrid.tags.TaskToTagMetadata; -import org.tasks.tasklist.ViewHolder; - /** * Adapter for displaying a user's tasks as a list * * @author Tim Su * */ -public class TaskAdapter extends CursorAdapter implements Filterable, ViewHolder.ViewHolderCallbacks { +public class TaskAdapter extends CursorAdapter implements Filterable { public interface OnCompletedTaskListener { void onCompletedTask(Task item, boolean newState); @@ -65,12 +63,10 @@ public class TaskAdapter extends CursorAdapter implements Filterable, ViewHolder // --- instance variables - private final TaskListFragment fragment; private OnCompletedTaskListener onCompletedTaskListener = null; - public TaskAdapter(Context context, TaskListFragment fragment, Cursor c) { + public TaskAdapter(Context context, Cursor c) { super(context, c, false); - this.fragment = fragment; } @Override @@ -126,12 +122,6 @@ public class TaskAdapter extends CursorAdapter implements Filterable, ViewHolder } } - @Override - public void onClick(long id) { - fragment.onTaskListItemClicked(id); - } - - @Override public void onCompletedTask(Task task, boolean newState) { if (onCompletedTaskListener != null) { onCompletedTaskListener.onCompletedTask(task, newState); diff --git a/src/main/java/com/todoroo/astrid/subtasks/AstridOrderedListFragmentHelper.java b/src/main/java/com/todoroo/astrid/subtasks/AstridOrderedListFragmentHelper.java index b2675c1cf..268ce2df8 100644 --- a/src/main/java/com/todoroo/astrid/subtasks/AstridOrderedListFragmentHelper.java +++ b/src/main/java/com/todoroo/astrid/subtasks/AstridOrderedListFragmentHelper.java @@ -50,7 +50,7 @@ class AstridOrderedListFragmentHelper { } TaskAdapter createTaskAdapter(Context context, TodorooCursor cursor) { - taskAdapter = new DraggableTaskAdapter(context, fragment, cursor); + taskAdapter = new DraggableTaskAdapter(context, cursor); taskAdapter.setOnCompletedTaskListener(this::setCompletedForItemAndSubtasks); @@ -59,8 +59,8 @@ class AstridOrderedListFragmentHelper { private final class DraggableTaskAdapter extends TaskAdapter { - private DraggableTaskAdapter(Context context, TaskListFragment activity, Cursor c) { - super(context, activity, c); + private DraggableTaskAdapter(Context context, Cursor c) { + super(context, c); } @Override diff --git a/src/main/java/org/tasks/tasklist/TaskListRecyclerAdapter.java b/src/main/java/org/tasks/tasklist/TaskListRecyclerAdapter.java index 07f0b2a44..c53e070bb 100644 --- a/src/main/java/org/tasks/tasklist/TaskListRecyclerAdapter.java +++ b/src/main/java/org/tasks/tasklist/TaskListRecyclerAdapter.java @@ -9,23 +9,27 @@ import android.view.LayoutInflater; import android.view.ViewGroup; import com.todoroo.andlib.data.TodorooCursor; +import com.todoroo.astrid.activity.TaskListFragment; import com.todoroo.astrid.adapter.TaskAdapter; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.utility.Flags; import org.tasks.R; -public class TaskListRecyclerAdapter extends RecyclerView.Adapter { +public class TaskListRecyclerAdapter extends RecyclerView.Adapter implements ViewHolder.ViewHolderCallbacks { private final Context context; private final TaskAdapter adapter; private final ViewHolderFactory viewHolderFactory; + private final TaskListFragment taskList; private final ItemTouchHelper itemTouchHelper; - public TaskListRecyclerAdapter(Context context, TaskAdapter adapter, ViewHolderFactory viewHolderFactory) { + public TaskListRecyclerAdapter(Context context, TaskAdapter adapter, + ViewHolderFactory viewHolderFactory, TaskListFragment taskList) { this.context = context; this.adapter = adapter; this.viewHolderFactory = viewHolderFactory; + this.taskList = taskList; itemTouchHelper = new ItemTouchHelper(new ItemTouchHelperCallback()); } @@ -38,7 +42,7 @@ public class TaskListRecyclerAdapter extends RecyclerView.Adapter { public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { ViewGroup view = (ViewGroup) LayoutInflater.from(context) .inflate(R.layout.task_adapter_row_simple, parent, false); - return viewHolderFactory.newViewHolder(view, adapter); + return viewHolderFactory.newViewHolder(view, this); } @Override @@ -54,6 +58,19 @@ public class TaskListRecyclerAdapter extends RecyclerView.Adapter { return adapter.getCount(); } + @Override + public void onCompletedTask(Task task, boolean newState) { + adapter.onCompletedTask(task, newState); + } + + @Override + public void onClick(ViewHolder viewHolder) { + Task task = viewHolder.task; + if (!task.isDeleted()) { + taskList.onTaskListItemClicked(task.getId()); + } + } + private class ItemTouchHelperCallback extends ItemTouchHelper.Callback { private int from = -1; diff --git a/src/main/java/org/tasks/tasklist/ViewHolder.java b/src/main/java/org/tasks/tasklist/ViewHolder.java index dbbac4fc4..2ff1e0e45 100644 --- a/src/main/java/org/tasks/tasklist/ViewHolder.java +++ b/src/main/java/org/tasks/tasklist/ViewHolder.java @@ -52,7 +52,7 @@ public class ViewHolder extends RecyclerView.ViewHolder { public interface ViewHolderCallbacks { void onCompletedTask(Task task, boolean newState); - void onClick(long id); + void onClick(ViewHolder viewHolder); } @BindView(R.id.row) public ViewGroup row; @@ -294,11 +294,7 @@ public class ViewHolder extends RecyclerView.ViewHolder { completeBox.setOnTouchListener(otl); completeBox.setOnClickListener(completeBoxListener); - rowBody.setOnClickListener(view -> { - if (!task.isDeleted()) { - callback.onClick(task.getId()); - } - }); + rowBody.setOnClickListener(view -> callback.onClick(this)); if (taskActionContainer != null) { taskActionContainer.setOnClickListener(v -> {