Project Notes Report
Project Notes Report
A
PROJECT REPORT
ON
“Notes App”
SUBMITTED BY
KaranAshok Rathod.
UNDER THE GUIDENCE OF
SUBMITTED
To
DEPARTMENT OF COMPUTER SCIENCE
2023-2024
CERTIFICATE
This is to certify that
Have successfully completed the Project and submitted the Report entitled
“Notes App" during the academic year 2023-2024, under the
guidance of Mr. Amol Chavan. as partial fulfillment of Bachelor Degree
in Computer Science.
We hereby declare that, the project report submitted by Karan Ashok Rathod in
practical fulfillment of Bachelor of computer Science degree B.Sc. T Y is a
genuine work.
It has not been submitted either fully or partially by any Institute prior in any other
It is a pleasure to thank the many people who made this possible to prepare this
“Notes App” . It is difficult to overstate my gratitude to my project guide,
with his enthusiasm and his great effort to explain things clearly and simply it
became possible for me to prepare this project in such a way. He helped me to
make this project a great opportunity to learn more about Android Studio with
java, android and implement the same practically in my project. Throughout my
project preparation period, my study center faculties also provided encouragement,
sound advice, good teaching and lots of good ideas. I would have been lost without
them. I would like to thank all of them for all their help, support and interest
valuable hints.
Developed By
Karan Ashok Rathod
Bachelor of Computer Science(T.Y)
.
INDEX
Chapter Page
Name Of The Topic
No. No.
Introduction
1
Abstract
2
3 Objective
4 Features
5 Project DFD
6 System Requirement
7 Project Module
8.1 Homepage
8 Source Code
9 Outputs
10 Conclusion
11 Bibliography
1. Introduction
The Android Notes App is a handy tool for keeping
track of your thoughts and ideas. With this app, you
can easily create, edit, and organize your notes,
whether they're short reminders or longer pieces of
text. The app's simple interface makes it easy to
navigate between different notes, and you can
quickly edit them whenever you need to. Our goal in
creating this app was to make note-taking as
straightforward and convenient as possible, so you
can focus on capturing your thoughts without any
hassle. Whether you're jotting down a quick idea or
writing a detailed note, our app is here to help you
stay organized and productive.
2. Abstract
Our Android Notes App is designed to simplify the note-taking process on
mobile devices. With features for creating, editing, and organizing notes,
users can easily capture their thoughts and tasks. The app's intuitive interface
ensures seamless navigation between notes, while robust editing capabilities
enable users to modify their content effortlessly. Additionally,
comprehensive organization features allow users to manage multiple notes
efficiently. In essence, our app prioritizes simplicity and functionality to
By offering these features, our Android Notes App aims to provide users
with a comprehensive and versatile tool for capturing, organizing, and
managing their notes effectively and efficiently.
5.Project DFD
7.System Requirement
Software Requirement:
5. Internet Connectivity: NA
Hardware Requirement:
1. Processor:ARM or x86 processor compatible with Android
architecture.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Notes"
tools:targetApi="31">
<activity
android:name=".MainActivity"
android:label="Notes"
android:exported="true">
<intent-filter>
</activity>
</application>
</manifest>
Mainactivity.java:
package com.example.notes;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ListView;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import java.util.List;
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
noteListView = findViewById(R.id.noteListView);
newNoteButton = findViewById(R.id.newNoteButton);
noteListView.setAdapter(adapter);
newNoteButton.setOnClickListener(new View.OnClickListener() {
@Override
startActivity(intent);
});
// Set long click listener for deleting a note
noteListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener()
{
@Override
showDeleteDialog(adapter, position);
return true;
});
return databaseHelper.getAllNotes();
@Override
deleteNoteFromDatabase(noteToDelete.getId());
adapter.remove(noteToDelete);
adapter.notifyDataSetChanged();
})
@Override
})
.show();
databaseHelper.deleteNoteById(noteId);
@Override
intent.putExtra("noteId", note.getId());
startActivity(intent);
DatabaseHelper.java:
package com.example.notes;
// DatabaseHelper.java
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import java.util.ArrayList;
import java.util.List;
@Override
db.execSQL(TABLE_CREATE);
@Override
onCreate(db);
SQLiteDatabase db = this.getWritableDatabase();
try {
new String[]{String.valueOf(noteId)});
if (deletedRows > 0) {
} catch (SQLException e) {
} finally {
db.close();
SQLiteDatabase db = this.getWritableDatabase();
values.put(COLUMN_HEADING, heading);
values.put(COLUMN_DETAILS, details);
try {
} catch (SQLException e) {
} finally {
db.close();
return newRowId;
}
SQLiteDatabase db = this.getWritableDatabase();
values.put(COLUMN_HEADING, heading);
values.put(COLUMN_DETAILS, details);
try {
new String[]{String.valueOf(noteId)});
} catch (SQLException e) {
} finally {
db.close();
SQLiteDatabase db = this.getReadableDatabase();
try {
TABLE_NOTES,
null,
null,
null,
null,
null
);
do {
long id = cursor.getLong(cursor.getColumnIndex(COLUMN_ID));
note.setId(id);
note.setHeading(heading);
note.setDetails(details);
notes.add(note);
} while (cursor.moveToNext());
cursor.close();
}
} catch (SQLException e) {
} finally {
db.close();
return notes;
SQLiteDatabase db = this.getReadableDatabase();
try {
TABLE_NOTES,
new String[]{String.valueOf(noteId)},
null,
null,
null
);
note.setId(id);
note.setHeading(heading);
note.setDetails(details);
cursor.close();
} catch (SQLException e) {
} finally {
db.close();
return note;
NoteAdapter.java
package com.example.notes;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import java.util.List;
super(context, 0, notes);
this.context = context;
this.notes = notes;
this.onNoteClickListener = onNoteClickListener;
@NonNull
@Override
public View getView(final int position, @Nullable View convertView, @NonNull ViewGroup
parent) {
if (convertView == null) {
convertView =
LayoutInflater.from(getContext()).inflate(android.R.layout.simple_list_item_1, parent, false);
textView.setText(note.getHeading());
convertView.setOnClickListener(new View.OnClickListener() {
@Override
if (onNoteClickListener != null) {
onNoteClickListener.onNoteClick(note);
});
convertView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
return true;
});
return convertView;
@Override
deleteNoteFromDatabase(noteToDelete.getId());
notes.remove(noteToDelete);
notifyDataSetChanged();
showToast("Note deleted");
})
@Override
}
})
.show();
databaseHelper.deleteNoteById(noteId);
Note.java:
package com.example.notes;
// Note.java
return id;
this.id = id;
return heading;
this.heading = heading;
return details;
this.details = details;
NoteDetailActivity.java
package com.example.notes;
NoteDetailActivity.java
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import androidx.appcompat.app.AppCompatActivity;
import android.widget.Toast;
@Override
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_note_detail);
noteHeadingEditText = findViewById(R.id.noteHeadingEditText);
noteDetailsEditText = findViewById(R.id.noteDetailsEditText);
saveNoteButton = findViewById(R.id.saveNoteButton);
if (noteId != -1) {
loadNoteDetails(noteId);
saveNoteButton.setOnClickListener(new View.OnClickListener() {
@Override
saveNote();
});
if (note != null) {
noteHeadingEditText.setText(note.getHeading());
noteDetailsEditText.setText(note.getDetails());
// Validate input
if (TextUtils.isEmpty(heading)) {
return;
if (noteId == -1) {
// New note
if (newNoteId != -1) {
} else {
} else {
// Existing note
if (updated) {
} else {
startActivity(intent);
finish();
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center_horizontal"
android:padding="16dp">
<TextView
android:id="@+id/textView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Notes"
android:paddingTop="10dp"
android:layout_marginTop="5dp"
android:textStyle="bold"
android:layout_gravity="center"
android:textSize="25sp"/>
<ListView
android:id="@+id/noteListView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:dividerHeight="1dp"
android:divider="#0C0202" />
<Button
android:id="@+id/newNoteButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
</LinearLayout>
Activity_note_detail
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center_horizontal"
android:padding="16dp">
<EditText
android:id="@+id/noteHeadingEditText"
android:layout_width="match_parent"
android:inputType="text"
android:layout_height="wrap_content"
android:hint="Note Heading"
android:padding="15dp"
android:layout_marginTop="5dp"
android:background="#1DE9B6"
android:textStyle="bold"/>
<EditText
android:id="@+id/noteDetailsEditText"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:hint="Note Details"
android:gravity="top" />
<Button
android:id="@+id/saveNoteButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
</LinearLayout>
Graddle
plugins {
id("com.android.application")
android {
namespace = "com.example.notes"
compileSdk = 34
defaultConfig {
applicationId = "com.example.notes"
minSdk = 28
targetSdk = 34
versionCode = 1
versionName = "1.0"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
dependencies {
implementation("androidx.appcompat:appcompat:1.6.1")
implementation("com.google.android.material:material:1.11.0")
implementation("androidx.constraintlayout:constraintlayout:2.1.4")
testImplementation("junit:junit:4.13.2")
androidTestImplementation("androidx.test.ext:junit:1.1.5")
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
}
10.Outputs
Homepage:
New note
Delet Note
10.Conclusion
6. Stack Overflow:
[https://stackoverflow.com/](https://stackoverflow.com/) (For
community-driven support and troubleshooting)
7. GitHub: [https://github.com/](https://github.com/)
10. Coursera:
[https://www.coursera.org/](https://www.coursera.org/) (For
Android development courses)