package com.zhuinden.simplestackdemoexamplefragments.presentation.paths.tasks;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.TextView;
import com.zhuinden.simplestackdemoexamplefragments.R;
import com.zhuinden.simplestackdemoexamplefragments.presentation.objects.Task;
import java.util.Collections;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import static com.zhuinden.simplestackdemoexamplefragments.util.Preconditions.checkNotNull;
/**
* Created by Zhuinden on 2017.01.26..
*/
public class TasksAdapter
extends RecyclerView.Adapter<TasksAdapter.TaskViewHolder> {
public static class TaskViewHolder
extends RecyclerView.ViewHolder {
@BindView(R.id.title)
TextView title;
@BindView(R.id.complete)
CheckBox complete;
@OnClick(R.id.complete)
public void toggleComplete() {
if(!task.isCompleted()) {
itemListener.completeTask(task);
} else {
itemListener.uncompleteTask(task);
}
}
Task task;
TaskItemListener itemListener;
View.OnClickListener rowClickListener = (view) -> {
itemListener.openTask(task);
};
View row;
Context context;
public TaskViewHolder(View itemView, TaskItemListener itemListener) {
super(itemView);
context = itemView.getContext();
this.itemListener = itemListener;
this.row = itemView;
ButterKnife.bind(this, itemView);
itemView.setOnClickListener(rowClickListener);
}
public void bind(Task task) {
this.task = task;
title.setText(task.getTitleForList());
complete.setChecked(task.isCompleted());
if(task.isCompleted()) {
row.setBackgroundDrawable(context.getResources().getDrawable(R.drawable.list_completed_touch_feedback));
} else {
row.setBackgroundDrawable(context.getResources().getDrawable(R.drawable.touch_feedback));
}
}
}
public interface TaskItemListener {
void openTask(Task task);
void completeTask(Task task);
void uncompleteTask(Task task);
}
private List<Task> tasks;
private TaskItemListener itemListener;
public TasksAdapter(List<Task> tasks, TaskItemListener itemListener) {
setData(tasks);
this.itemListener = itemListener;
notifyDataSetChanged();
}
public List<Task> getData() {
return Collections.unmodifiableList(tasks);
}
public void setData(List<Task> tasks) {
this.tasks = checkNotNull(tasks);
}
@Override
public TaskViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new TaskViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.task_item, parent, false), itemListener);
}
@Override
public void onBindViewHolder(TaskViewHolder holder, int position) {
final Task task = tasks.get(position);
holder.bind(task);
}
@Override
public int getItemCount() {
return tasks.size();
}
}