steroid-team/app

View on GitHub
app/src/main/java/com/github/steroidteam/todolist/view/adapter/TodoArrayListAdapter.java

Summary

Maintainability
A
0 mins
Test Coverage
A
90%
package com.github.steroidteam.todolist.view.adapter;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.github.steroidteam.todolist.R;
import com.github.steroidteam.todolist.model.todo.TodoList;
import java.util.List;

public class TodoArrayListAdapter extends RecyclerView.Adapter<TodoArrayListAdapter.TodoHolder> {

    private List<TodoList> todoListArrayList;
    private final TodoHolder.TodoCustomListener listener;

    public TodoArrayListAdapter(TodoHolder.TodoCustomListener listener) {
        this.listener = listener;
    }

    @NonNull
    @Override
    public TodoHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View itemView =
                LayoutInflater.from(parent.getContext())
                        .inflate(R.layout.layout_todo_list_item, parent, false);
        return new TodoHolder(itemView, listener);
    }

    @Override
    public void onBindViewHolder(@NonNull TodoHolder holder, int position) {
        TodoList currentTodo = todoListArrayList.get(position);
        if (currentTodo != null) {
            holder.todoTitle.setText(currentTodo.getTitle());
            holder.todoList = currentTodo;
        }
    }

    @Override
    public int getItemCount() {
        return (todoListArrayList == null) ? 0 : todoListArrayList.size();
    }

    public void setTodoListCollection(List<TodoList> todoListCollection) {
        this.todoListArrayList = todoListCollection;
    }

    public static class TodoHolder extends RecyclerView.ViewHolder {
        private final TextView todoTitle;
        private TodoList todoList;

        public TodoHolder(@NonNull View itemView, final TodoCustomListener listener) {
            super(itemView);

            todoTitle = itemView.findViewById(R.id.layout_todo_list_text);

            itemView.setOnClickListener(
                    (View view) -> {
                        listener.onClickCustom(TodoHolder.this);
                    });
        }

        public TodoList getTodo() {
            return todoList;
        }

        public interface TodoCustomListener {
            void onClickCustom(TodoHolder holder);
        }
    }
}