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 = 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

@ -433,7 +433,7 @@ public class TaskListFragment extends InjectingFragment implements
}
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$
@ -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() {

@ -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 <tim@todoroo.com>
*
*/
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);

@ -50,7 +50,7 @@ class AstridOrderedListFragmentHelper {
}
TaskAdapter createTaskAdapter(Context context, TodorooCursor<Task> 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

@ -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<ViewHolder> {
public class TaskListRecyclerAdapter extends RecyclerView.Adapter<ViewHolder> 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<ViewHolder> {
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<ViewHolder> {
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;

@ -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 -> {

Loading…
Cancel
Save