0% found this document useful (0 votes)
48 views9 pages

Do It Code

The document contains source code for an Android app that allows users to manage to-do lists. It includes code for the main activity, which handles displaying and editing tasks. It also includes code for a bottom sheet dialog fragment to add new tasks, and for swipe gestures to delete or edit existing tasks.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
48 views9 pages

Do It Code

The document contains source code for an Android app that allows users to manage to-do lists. It includes code for the main activity, which handles displaying and editing tasks. It also includes code for a bottom sheet dialog fragment to add new tasks, and for swipe gestures to delete or edit existing tasks.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 9

APPENDIX-SOURCE CODE:

Main Activity.java:

package com.example.doit;

import androidx.appcompat.app.AppCompatActivity;

import androidx.recyclerview.widget.ItemTouchHelper;

import androidx.recyclerview.widget.LinearLayoutManager;

import androidx.recyclerview.widget.RecyclerView;

import android.content.DialogInterface;

import android.os.Bundle;

import android.view.View;

import com.google.android.material.floatingactionbutton.FloatingActionButton;

import com.example.doit.Adapters.ToDoAdapter;

import com.example.doit.Model.ToDoModel;

import com.example.doit.Utils.DatabaseHandler;

import java.util.Collections;

import java.util.List;

import java.util.Objects;

public class MainActivity extends AppCompatActivity implements DialogCloseListener{

private DatabaseHandler db;

private RecyclerView tasksRecyclerView;

private ToDoAdapter tasksAdapter;

private FloatingActionButton fab;

private List<ToDoModel> taskList;

28

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Objects.requireNonNull(getSupportActionBar()).hide();

db = new DatabaseHandler(this);

db.openDatabase();
tasksRecyclerView = findViewById(R.id.tasksRecyclerView);

tasksRecyclerView.setLayoutManager(new LinearLayoutManager(this));

tasksAdapter = new ToDoAdapter(db,MainActivity.this);

tasksRecyclerView.setAdapter(tasksAdapter);

ItemTouchHelper itemTouchHelper = new

ItemTouchHelper(new RecyclerItemTouchHelper(tasksAdapter));

itemTouchHelper.attachToRecyclerView(tasksRecyclerView);

fab = findViewById(R.id.fab);

taskList = db.getAllTasks();

Collections.reverse(taskList);

tasksAdapter.setTasks(taskList);

fab.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

AddNewTask.newInstance().show(getSupportFragmentManager(),

AddNewTask.TAG);

});

29

@Override

public void handleDialogClose(DialogInterface dialog){

taskList = db.getAllTasks();

Collections.reverse(taskList);

tasksAdapter.setTasks(taskList);

tasksAdapter.notifyDataSetChanged();

Add New Task .java:

package com.example.doit;

import android.app.Activity;
import android.content.DialogInterface;

import android.graphics.Color;

import android.os.Bundle;

import android.text.Editable;

import android.text.TextWatcher;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.view.WindowManager;

import android.widget.Button;

import android.widget.EditText;import androidx.annotation.NonNull;

import androidx.annotation.Nullable;

import androidx.core.content.ContextCompat;

30

import com.google.android.material.bottomsheet.BottomSheetDialogFragment;

import com.example.doit.Model.ToDoModel;

import com.example.doit.Utils.DatabaseHandler;

import com.example.doit.R;

import java.util.Objects;

public class AddNewTask extends BottomSheetDialogFragment {

public static final String TAG = "ActionBottomDialog";

private EditText newTaskText;

private Button newTaskSaveButton;

private DatabaseHandler db;

public static AddNewTask newInstance(){

return new AddNewTask();

@Override

public void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setStyle(STYLE_NORMAL, R.style.DialogStyle);
}

@Nullable

@Override

public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup

container,

@Nullable Bundle savedInstanceState) {

View view = inflater.inflate(R.layout.new_task, container, false);

getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_A

DJUST_RESIZE);

31

return view;

@Override

public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {

super.onViewCreated(view, savedInstanceState);

newTaskText = Objects.requireNonNull(getView()).findViewById(R.id.newTaskText);

newTaskSaveButton = getView().findViewById(R.id.newTaskButton);

boolean isUpdate = false;

final Bundle bundle = getArguments();

if(bundle != null){

isUpdate = true;

String task = bundle.getString("task");

newTaskText.setText(task);

assert task != null;

if(task.length()>0)

newTaskSaveButton.setTextColor(ContextCompat.getColor(Objects.requireNonNull(getContext

()), R.color.colorPrimaryDark));

db = new DatabaseHandler(getActivity());

db.openDatabase();

newTaskText.addTextChangedListener(new TextWatcher() {
@Override

public void beforeTextChanged(CharSequence s, int start, int count, int after) {

@Override

public void onTextChanged(CharSequence s, int start, int before, int count) {

32

if(s.toString().equals("")){

newTaskSaveButton.setEnabled(false);

newTaskSaveButton.setTextColor(Color.GRAY);

else{

newTaskSaveButton.setEnabled(true);

newTaskSaveButton.setTextColor(ContextCompat.getColor(Objects.requireNonNull(getContext

()), R.color.colorPrimaryDark));

@Override

public void afterTextChanged(Editable s) {

});

final boolean finalIsUpdate = isUpdate;

newTaskSaveButton.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

String text = newTaskText.getText().toString();

if(finalIsUpdate){

db.updateTask(bundle.getInt("id"), text);

else {

ToDoModel task = new ToDoModel();

task.setTask(text);
33

task.setStatus(0);

db.insertTask(task);

dismiss();

});

@Override

public void onDismiss(@NonNull DialogInterface dialog){

Activity activity = getActivity();

if(activity instanceof DialogCloseListener)

((DialogCloseListener)activity).handleDialogClose(dialog);

Recycleritem TouchHelper.java:

package com.example.doit;

import android.content.DialogInterface;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.drawable.ColorDrawable;

import android.graphics.drawable.Drawable;

import android.view.View;

import androidx.annotation.NonNull;

import androidx.appcompat.app.AlertDialog;

34

import androidx.core.content.ContextCompat;

import androidx.recyclerview.widget.ItemTouchHelper;

import androidx.recyclerview.widget.RecyclerView;

import com.example.doit.Adapters.ToDoAdapter;

import com.example.doit.R;
public class RecyclerItemTouchHelper extends ItemTouchHelper.SimpleCallback {

private ToDoAdapter adapter;

public RecyclerItemTouchHelper(ToDoAdapter adapter) {

super(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT);

this.adapter = adapter;

@Override

public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull

RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {

return false;

@Override

public void onSwiped(@NonNull final RecyclerView.ViewHolder viewHolder, int direction)

final int position = viewHolder.getAdapterPosition();

if (direction == ItemTouchHelper.LEFT) {

AlertDialog.Builder builder = new AlertDialog.Builder(adapter.getContext());

builder.setTitle("Delete Task");

builder.setMessage("Are you sure you want to delete this Task?");

builder.setPositiveButton("Confirm",

new DialogInterface.OnClickListener() {

35

@Override

public void onClick(DialogInterface dialog, int which) {

adapter.deleteItem(position);

});

builder.setNegativeButton(android.R.string.cancel, new

DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {


adapter.notifyItemChanged(viewHolder.getAdapterPosition());

});

AlertDialog dialog = builder.create();

dialog.show();

} else {

adapter.editItem(position);

@Override

public void onChildDraw(@NonNull Canvas c, @NonNull RecyclerView recyclerView,

@NonNull RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean

isCurrentlyActive) { super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState,

isCurrentlyActive);

Drawable icon;

ColorDrawable background;

View itemView = viewHolder.itemView;

int backgroundCornerOffset = 20;

36

if (dX > 0) {

icon = ContextCompat.getDrawable(adapter.getContext(), R.drawable.ic_baseline_edit);

background = new ColorDrawable(ContextCompat.getColor(adapter.getContext(),

R.color.colorPrimaryDark));

} else {

icon = ContextCompat.getDrawable(adapter.getContext(),

R.drawable.ic_baseline_delete);

background = new ColorDrawable(Color.RED);

assert icon != null;

int iconMargin = (itemView.getHeight() - icon.getIntrinsicHeight()) / 2;

int iconTop = itemView.getTop() + (itemView.getHeight() - icon.getIntrinsicHeight()) / 2;


int iconBottom = iconTop + icon.getIntrinsicHeight();

if (dX > 0) { // Swiping to the right

int iconLeft = itemView.getLeft() + iconMargin;

int iconRight = itemView.getLeft() + iconMargin + icon.getIntrinsicWidth();

icon.setBounds(iconLeft, iconTop, iconRight, iconBottom);

background.setBounds(itemView.getLeft(), itemView.getTop(),

itemView.getLeft() + ((int) dX) + backgroundCornerOffset, itemView.getBottom());

} else if (dX < 0) { // Swiping to the left

int iconLeft = itemView.getRight() - iconMargin - icon.getIntrinsicWidth();

int iconRight = itemView.getRight() - iconMargin;

icon.setBounds(iconLeft, iconTop, iconRight, iconBottom);

background.setBounds(itemView.getRight() + ((int) dX) - backgroundCornerOffset,

itemView.getTop(), itemView.getRight(), itemView.getBottom());

37

} else { // view is unSwiped

background.setBounds(0, 0, 0, 0);

background.draw(c);

icon.draw(c);

Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();

assertEquals("net.penguincoders.doit", appContext.getPackageName());

You might also like