Move fragment to recycler view adapter

pull/493/head
Alex Baker 9 years ago
parent 6adcd6b62e
commit 6a5e2f4260

@ -55,7 +55,7 @@ class OrderedMetadataListFragmentHelper {
} }
TaskAdapter createTaskAdapter(Context context, TodorooCursor<Task> cursor) { TaskAdapter createTaskAdapter(Context context, TodorooCursor<Task> cursor) {
taskAdapter = new DraggableTaskAdapter(context, fragment, cursor); taskAdapter = new DraggableTaskAdapter(context, cursor);
taskAdapter.setOnCompletedTaskListener(this::setCompletedForItemAndSubtasks); taskAdapter.setOnCompletedTaskListener(this::setCompletedForItemAndSubtasks);
@ -64,8 +64,8 @@ class OrderedMetadataListFragmentHelper {
private final class DraggableTaskAdapter extends TaskAdapter { private final class DraggableTaskAdapter extends TaskAdapter {
private DraggableTaskAdapter(Context context, TaskListFragment activity, Cursor c) { private DraggableTaskAdapter(Context context, Cursor c) {
super(context, activity, c); super(context, c);
} }
@Override @Override

@ -433,7 +433,7 @@ public class TaskListFragment extends InjectingFragment implements
} }
protected TaskAdapter createTaskAdapter(TodorooCursor<Task> cursor) { protected TaskAdapter createTaskAdapter(TodorooCursor<Task> cursor) {
return new TaskAdapter(context, this, cursor); return new TaskAdapter(context, cursor);
} }
public static final String TAGS_METADATA_JOIN = "for_tags"; //$NON-NLS-1$ 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 // set up list adapters
taskAdapter = createTaskAdapter(currentCursor); taskAdapter = createTaskAdapter(currentCursor);
recyclerAdapter = new TaskListRecyclerAdapter(context, taskAdapter, viewHolderFactory); recyclerAdapter = new TaskListRecyclerAdapter(context, taskAdapter, viewHolderFactory, this);
} }
public Property<?>[] taskProperties() { public Property<?>[] taskProperties() {

@ -23,15 +23,13 @@ import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.data.TaskAttachment; import com.todoroo.astrid.data.TaskAttachment;
import com.todoroo.astrid.tags.TaskToTagMetadata; import com.todoroo.astrid.tags.TaskToTagMetadata;
import org.tasks.tasklist.ViewHolder;
/** /**
* Adapter for displaying a user's tasks as a list * Adapter for displaying a user's tasks as a list
* *
* @author Tim Su <tim@todoroo.com> * @author Tim Su <tim@todoroo.com>
* *
*/ */
public class TaskAdapter extends CursorAdapter implements Filterable, ViewHolder.ViewHolderCallbacks { public class TaskAdapter extends CursorAdapter implements Filterable {
public interface OnCompletedTaskListener { public interface OnCompletedTaskListener {
void onCompletedTask(Task item, boolean newState); void onCompletedTask(Task item, boolean newState);
@ -65,12 +63,10 @@ public class TaskAdapter extends CursorAdapter implements Filterable, ViewHolder
// --- instance variables // --- instance variables
private final TaskListFragment fragment;
private OnCompletedTaskListener onCompletedTaskListener = null; private OnCompletedTaskListener onCompletedTaskListener = null;
public TaskAdapter(Context context, TaskListFragment fragment, Cursor c) { public TaskAdapter(Context context, Cursor c) {
super(context, c, false); super(context, c, false);
this.fragment = fragment;
} }
@Override @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) { public void onCompletedTask(Task task, boolean newState) {
if (onCompletedTaskListener != null) { if (onCompletedTaskListener != null) {
onCompletedTaskListener.onCompletedTask(task, newState); onCompletedTaskListener.onCompletedTask(task, newState);

@ -50,7 +50,7 @@ class AstridOrderedListFragmentHelper {
} }
TaskAdapter createTaskAdapter(Context context, TodorooCursor<Task> cursor) { TaskAdapter createTaskAdapter(Context context, TodorooCursor<Task> cursor) {
taskAdapter = new DraggableTaskAdapter(context, fragment, cursor); taskAdapter = new DraggableTaskAdapter(context, cursor);
taskAdapter.setOnCompletedTaskListener(this::setCompletedForItemAndSubtasks); taskAdapter.setOnCompletedTaskListener(this::setCompletedForItemAndSubtasks);
@ -59,8 +59,8 @@ class AstridOrderedListFragmentHelper {
private final class DraggableTaskAdapter extends TaskAdapter { private final class DraggableTaskAdapter extends TaskAdapter {
private DraggableTaskAdapter(Context context, TaskListFragment activity, Cursor c) { private DraggableTaskAdapter(Context context, Cursor c) {
super(context, activity, c); super(context, c);
} }
@Override @Override

@ -9,23 +9,27 @@ import android.view.LayoutInflater;
import android.view.ViewGroup; import android.view.ViewGroup;
import com.todoroo.andlib.data.TodorooCursor; import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.astrid.activity.TaskListFragment;
import com.todoroo.astrid.adapter.TaskAdapter; import com.todoroo.astrid.adapter.TaskAdapter;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.utility.Flags; import com.todoroo.astrid.utility.Flags;
import org.tasks.R; import org.tasks.R;
public class TaskListRecyclerAdapter extends RecyclerView.Adapter<ViewHolder> { public class TaskListRecyclerAdapter extends RecyclerView.Adapter<ViewHolder> implements ViewHolder.ViewHolderCallbacks {
private final Context context; private final Context context;
private final TaskAdapter adapter; private final TaskAdapter adapter;
private final ViewHolderFactory viewHolderFactory; private final ViewHolderFactory viewHolderFactory;
private final TaskListFragment taskList;
private final ItemTouchHelper itemTouchHelper; 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.context = context;
this.adapter = adapter; this.adapter = adapter;
this.viewHolderFactory = viewHolderFactory; this.viewHolderFactory = viewHolderFactory;
this.taskList = taskList;
itemTouchHelper = new ItemTouchHelper(new ItemTouchHelperCallback()); itemTouchHelper = new ItemTouchHelper(new ItemTouchHelperCallback());
} }
@ -38,7 +42,7 @@ public class TaskListRecyclerAdapter extends RecyclerView.Adapter<ViewHolder> {
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
ViewGroup view = (ViewGroup) LayoutInflater.from(context) ViewGroup view = (ViewGroup) LayoutInflater.from(context)
.inflate(R.layout.task_adapter_row_simple, parent, false); .inflate(R.layout.task_adapter_row_simple, parent, false);
return viewHolderFactory.newViewHolder(view, adapter); return viewHolderFactory.newViewHolder(view, this);
} }
@Override @Override
@ -54,6 +58,19 @@ public class TaskListRecyclerAdapter extends RecyclerView.Adapter<ViewHolder> {
return adapter.getCount(); 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 class ItemTouchHelperCallback extends ItemTouchHelper.Callback {
private int from = -1; private int from = -1;

@ -52,7 +52,7 @@ public class ViewHolder extends RecyclerView.ViewHolder {
public interface ViewHolderCallbacks { public interface ViewHolderCallbacks {
void onCompletedTask(Task task, boolean newState); void onCompletedTask(Task task, boolean newState);
void onClick(long id); void onClick(ViewHolder viewHolder);
} }
@BindView(R.id.row) public ViewGroup row; @BindView(R.id.row) public ViewGroup row;
@ -294,11 +294,7 @@ public class ViewHolder extends RecyclerView.ViewHolder {
completeBox.setOnTouchListener(otl); completeBox.setOnTouchListener(otl);
completeBox.setOnClickListener(completeBoxListener); completeBox.setOnClickListener(completeBoxListener);
rowBody.setOnClickListener(view -> { rowBody.setOnClickListener(view -> callback.onClick(this));
if (!task.isDeleted()) {
callback.onClick(task.getId());
}
});
if (taskActionContainer != null) { if (taskActionContainer != null) {
taskActionContainer.setOnClickListener(v -> { taskActionContainer.setOnClickListener(v -> {

Loading…
Cancel
Save