From 70cb6fa984e1616df3cb4773c53eb36c6d3e48a9 Mon Sep 17 00:00:00 2001 From: fazil-ozil <60657039+fazil-ozil@users.noreply.github.com> Date: Wed, 9 Jun 2021 19:28:23 +0530 Subject: [PATCH] Intermediate todo app --- Android/Test/Advanced/test | 1 - Android/Test/Beginner/test | 1 - Android/Test/Intermediate/ToDo/.gitignore | 15 ++ .../Test/Intermediate/ToDo/.idea/.gitignore | 3 + .../Test/Intermediate/ToDo/.idea/compiler.xml | 6 + .../Test/Intermediate/ToDo/.idea/gradle.xml | 23 +++ .../ToDo/.idea/jarRepositories.xml | 25 +++ Android/Test/Intermediate/ToDo/.idea/misc.xml | 9 + .../ToDo/.idea/render.experimental.xml | 6 + Android/Test/Intermediate/ToDo/app/.gitignore | 1 + .../Test/Intermediate/ToDo/app/build.gradle | 43 +++++ .../ToDo/app/google-services.json | 39 ++++ .../Intermediate/ToDo/app/proguard-rules.pro | 21 +++ .../example/todo/ExampleInstrumentedTest.java | 26 +++ .../ToDo/app/src/main/AndroidManifest.xml | 21 +++ .../java/com/example/todo/MainActivity.java | 174 ++++++++++++++++++ .../src/main/java/com/example/todo/Model.java | 37 ++++ .../main/java/com/example/todo/MyAdapter.java | 155 ++++++++++++++++ .../drawable-v24/ic_launcher_foreground.xml | 30 +++ .../main/res/drawable/ic_baseline_add_24.xml | 10 + .../drawable/ic_baseline_short_text_24.xml | 5 + .../res/drawable/ic_launcher_background.xml | 170 +++++++++++++++++ .../src/main/res/layout/activity_additem.xml | 75 ++++++++ .../app/src/main/res/layout/activity_main.xml | 34 ++++ .../ToDo/app/src/main/res/layout/item.xml | 35 ++++ .../ToDo/app/src/main/res/layout/update.xml | 75 ++++++++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3593 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 5339 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2636 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 3388 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4926 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 7472 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 7909 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 11873 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 10652 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 16570 bytes .../app/src/main/res/values-night/themes.xml | 16 ++ .../ToDo/app/src/main/res/values/colors.xml | 10 + .../ToDo/app/src/main/res/values/strings.xml | 3 + .../ToDo/app/src/main/res/values/themes.xml | 16 ++ .../com/example/todo/ExampleUnitTest.java | 17 ++ Android/Test/Intermediate/ToDo/build.gradle | 25 +++ .../Test/Intermediate/ToDo/gradle.properties | 19 ++ .../ToDo/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 54329 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 + Android/Test/Intermediate/ToDo/gradlew | 172 +++++++++++++++++ Android/Test/Intermediate/ToDo/gradlew.bat | 84 +++++++++ .../Test/Intermediate/ToDo/settings.gradle | 2 + 50 files changed, 1418 insertions(+), 2 deletions(-) delete mode 100644 Android/Test/Advanced/test delete mode 100644 Android/Test/Beginner/test create mode 100644 Android/Test/Intermediate/ToDo/.gitignore create mode 100644 Android/Test/Intermediate/ToDo/.idea/.gitignore create mode 100644 Android/Test/Intermediate/ToDo/.idea/compiler.xml create mode 100644 Android/Test/Intermediate/ToDo/.idea/gradle.xml create mode 100644 Android/Test/Intermediate/ToDo/.idea/jarRepositories.xml create mode 100644 Android/Test/Intermediate/ToDo/.idea/misc.xml create mode 100644 Android/Test/Intermediate/ToDo/.idea/render.experimental.xml create mode 100644 Android/Test/Intermediate/ToDo/app/.gitignore create mode 100644 Android/Test/Intermediate/ToDo/app/build.gradle create mode 100644 Android/Test/Intermediate/ToDo/app/google-services.json create mode 100644 Android/Test/Intermediate/ToDo/app/proguard-rules.pro create mode 100644 Android/Test/Intermediate/ToDo/app/src/androidTest/java/com/example/todo/ExampleInstrumentedTest.java create mode 100644 Android/Test/Intermediate/ToDo/app/src/main/AndroidManifest.xml create mode 100644 Android/Test/Intermediate/ToDo/app/src/main/java/com/example/todo/MainActivity.java create mode 100644 Android/Test/Intermediate/ToDo/app/src/main/java/com/example/todo/Model.java create mode 100644 Android/Test/Intermediate/ToDo/app/src/main/java/com/example/todo/MyAdapter.java create mode 100644 Android/Test/Intermediate/ToDo/app/src/main/res/drawable-v24/ic_launcher_foreground.xml create mode 100644 Android/Test/Intermediate/ToDo/app/src/main/res/drawable/ic_baseline_add_24.xml create mode 100644 Android/Test/Intermediate/ToDo/app/src/main/res/drawable/ic_baseline_short_text_24.xml create mode 100644 Android/Test/Intermediate/ToDo/app/src/main/res/drawable/ic_launcher_background.xml create mode 100644 Android/Test/Intermediate/ToDo/app/src/main/res/layout/activity_additem.xml create mode 100644 Android/Test/Intermediate/ToDo/app/src/main/res/layout/activity_main.xml create mode 100644 Android/Test/Intermediate/ToDo/app/src/main/res/layout/item.xml create mode 100644 Android/Test/Intermediate/ToDo/app/src/main/res/layout/update.xml create mode 100644 Android/Test/Intermediate/ToDo/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 Android/Test/Intermediate/ToDo/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 Android/Test/Intermediate/ToDo/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 Android/Test/Intermediate/ToDo/app/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 Android/Test/Intermediate/ToDo/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 Android/Test/Intermediate/ToDo/app/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 Android/Test/Intermediate/ToDo/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 Android/Test/Intermediate/ToDo/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 Android/Test/Intermediate/ToDo/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 Android/Test/Intermediate/ToDo/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 Android/Test/Intermediate/ToDo/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 Android/Test/Intermediate/ToDo/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 Android/Test/Intermediate/ToDo/app/src/main/res/values-night/themes.xml create mode 100644 Android/Test/Intermediate/ToDo/app/src/main/res/values/colors.xml create mode 100644 Android/Test/Intermediate/ToDo/app/src/main/res/values/strings.xml create mode 100644 Android/Test/Intermediate/ToDo/app/src/main/res/values/themes.xml create mode 100644 Android/Test/Intermediate/ToDo/app/src/test/java/com/example/todo/ExampleUnitTest.java create mode 100644 Android/Test/Intermediate/ToDo/build.gradle create mode 100644 Android/Test/Intermediate/ToDo/gradle.properties create mode 100644 Android/Test/Intermediate/ToDo/gradle/wrapper/gradle-wrapper.jar create mode 100644 Android/Test/Intermediate/ToDo/gradle/wrapper/gradle-wrapper.properties create mode 100644 Android/Test/Intermediate/ToDo/gradlew create mode 100644 Android/Test/Intermediate/ToDo/gradlew.bat create mode 100644 Android/Test/Intermediate/ToDo/settings.gradle diff --git a/Android/Test/Advanced/test b/Android/Test/Advanced/test deleted file mode 100644 index 8b137891..00000000 --- a/Android/Test/Advanced/test +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Android/Test/Beginner/test b/Android/Test/Beginner/test deleted file mode 100644 index 8b137891..00000000 --- a/Android/Test/Beginner/test +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Android/Test/Intermediate/ToDo/.gitignore b/Android/Test/Intermediate/ToDo/.gitignore new file mode 100644 index 00000000..aa724b77 --- /dev/null +++ b/Android/Test/Intermediate/ToDo/.gitignore @@ -0,0 +1,15 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild +.cxx +local.properties diff --git a/Android/Test/Intermediate/ToDo/.idea/.gitignore b/Android/Test/Intermediate/ToDo/.idea/.gitignore new file mode 100644 index 00000000..26d33521 --- /dev/null +++ b/Android/Test/Intermediate/ToDo/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/Android/Test/Intermediate/ToDo/.idea/compiler.xml b/Android/Test/Intermediate/ToDo/.idea/compiler.xml new file mode 100644 index 00000000..61a9130c --- /dev/null +++ b/Android/Test/Intermediate/ToDo/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Android/Test/Intermediate/ToDo/.idea/gradle.xml b/Android/Test/Intermediate/ToDo/.idea/gradle.xml new file mode 100644 index 00000000..b617266a --- /dev/null +++ b/Android/Test/Intermediate/ToDo/.idea/gradle.xml @@ -0,0 +1,23 @@ + + + + + + + \ No newline at end of file diff --git a/Android/Test/Intermediate/ToDo/.idea/jarRepositories.xml b/Android/Test/Intermediate/ToDo/.idea/jarRepositories.xml new file mode 100644 index 00000000..a5f05cd8 --- /dev/null +++ b/Android/Test/Intermediate/ToDo/.idea/jarRepositories.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android/Test/Intermediate/ToDo/.idea/misc.xml b/Android/Test/Intermediate/ToDo/.idea/misc.xml new file mode 100644 index 00000000..d5d35ec4 --- /dev/null +++ b/Android/Test/Intermediate/ToDo/.idea/misc.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/Android/Test/Intermediate/ToDo/.idea/render.experimental.xml b/Android/Test/Intermediate/ToDo/.idea/render.experimental.xml new file mode 100644 index 00000000..8ec256a5 --- /dev/null +++ b/Android/Test/Intermediate/ToDo/.idea/render.experimental.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/Android/Test/Intermediate/ToDo/app/.gitignore b/Android/Test/Intermediate/ToDo/app/.gitignore new file mode 100644 index 00000000..42afabfd --- /dev/null +++ b/Android/Test/Intermediate/ToDo/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/Android/Test/Intermediate/ToDo/app/build.gradle b/Android/Test/Intermediate/ToDo/app/build.gradle new file mode 100644 index 00000000..b5abf931 --- /dev/null +++ b/Android/Test/Intermediate/ToDo/app/build.gradle @@ -0,0 +1,43 @@ +plugins { + id 'com.android.application' + id 'com.google.gms.google-services' +} + +android { + compileSdkVersion 30 + buildToolsVersion "30.0.3" + + defaultConfig { + multiDexEnabled true + applicationId "com.example.todo" + minSdkVersion 19 + targetSdkVersion 30 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + minifyEnabled 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.3.0' + implementation 'com.google.android.material:material:1.3.0' + implementation 'androidx.constraintlayout:constraintlayout:2.0.4' + implementation 'com.google.firebase:firebase-firestore:23.0.1' + implementation 'com.android.support:multidex:1.0.3' + testImplementation 'junit:junit:4.+' + androidTestImplementation 'androidx.test.ext:junit:1.1.2' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' +} \ No newline at end of file diff --git a/Android/Test/Intermediate/ToDo/app/google-services.json b/Android/Test/Intermediate/ToDo/app/google-services.json new file mode 100644 index 00000000..5279c584 --- /dev/null +++ b/Android/Test/Intermediate/ToDo/app/google-services.json @@ -0,0 +1,39 @@ +{ + "project_info": { + "project_number": "988987557944", + "project_id": "todo-9d44d", + "storage_bucket": "todo-9d44d.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:988987557944:android:1d63a104c9e295c86e3ecd", + "android_client_info": { + "package_name": "com.example.todo" + } + }, + "oauth_client": [ + { + "client_id": "988987557944-8ansfq225upo27cm47879ult189087cp.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyDJmWk6rqTcvp6i8h7irTAOwYdKhqZ4EYw" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "988987557944-8ansfq225upo27cm47879ult189087cp.apps.googleusercontent.com", + "client_type": 3 + } + ] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/Android/Test/Intermediate/ToDo/app/proguard-rules.pro b/Android/Test/Intermediate/ToDo/app/proguard-rules.pro new file mode 100644 index 00000000..481bb434 --- /dev/null +++ b/Android/Test/Intermediate/ToDo/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/Android/Test/Intermediate/ToDo/app/src/androidTest/java/com/example/todo/ExampleInstrumentedTest.java b/Android/Test/Intermediate/ToDo/app/src/androidTest/java/com/example/todo/ExampleInstrumentedTest.java new file mode 100644 index 00000000..51235b9c --- /dev/null +++ b/Android/Test/Intermediate/ToDo/app/src/androidTest/java/com/example/todo/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package com.example.todo; + +import android.content.Context; + +import androidx.test.platform.app.InstrumentationRegistry; +import androidx.test.ext.junit.runners.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumented test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); + assertEquals("com.example.todo", appContext.getPackageName()); + } +} \ No newline at end of file diff --git a/Android/Test/Intermediate/ToDo/app/src/main/AndroidManifest.xml b/Android/Test/Intermediate/ToDo/app/src/main/AndroidManifest.xml new file mode 100644 index 00000000..cbdbe3c5 --- /dev/null +++ b/Android/Test/Intermediate/ToDo/app/src/main/AndroidManifest.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android/Test/Intermediate/ToDo/app/src/main/java/com/example/todo/MainActivity.java b/Android/Test/Intermediate/ToDo/app/src/main/java/com/example/todo/MainActivity.java new file mode 100644 index 00000000..58ae265b --- /dev/null +++ b/Android/Test/Intermediate/ToDo/app/src/main/java/com/example/todo/MainActivity.java @@ -0,0 +1,174 @@ +package com.example.todo; + +import androidx.annotation.NonNull; +import androidx.appcompat.app.AlertDialog; +import androidx.appcompat.app.AppCompatActivity; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import android.os.Bundle; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.Toast; + +import com.google.android.gms.tasks.OnCompleteListener; +import com.google.android.gms.tasks.OnFailureListener; +import com.google.android.gms.tasks.Task; +import com.google.android.material.floatingactionbutton.FloatingActionButton; +import com.google.firebase.firestore.DocumentReference; +import com.google.firebase.firestore.DocumentSnapshot; +import com.google.firebase.firestore.FirebaseFirestore; +import com.google.firebase.firestore.QuerySnapshot; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +public class MainActivity extends AppCompatActivity { + private static final String TAG = "MainActivity"; + FloatingActionButton fab; + Button show; + RecyclerView recyclerView; + MyAdapter myAdapter; + List list; + + private FirebaseFirestore firebaseFirestore; + + @Override + protected void onCreate(Bundle savedInstanceState) { + + + + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + + firebaseFirestore=FirebaseFirestore.getInstance(); + + recyclerView=findViewById(R.id.recyclerview); + recyclerView.setLayoutManager(new LinearLayoutManager(this)); + recyclerView.setHasFixedSize(true); + + list=new ArrayList<>(); + myAdapter=new MyAdapter(list); + recyclerView.setAdapter(myAdapter); + + showData(); + + + fab=findViewById(R.id.fab); + fab.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + addTask(); + } + }); + + show=findViewById(R.id.show_button); + show.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + showData(); + } + }); + + + + } + + public void showData() { + firebaseFirestore.collection("task").get().addOnCompleteListener(new OnCompleteListener() { + @Override + public void onComplete(@NonNull Task task) { + list.clear(); + for(DocumentSnapshot snapshot:task.getResult()){ + Model model=new Model(snapshot.getString("title"),snapshot.getString("description"),snapshot.getString("id")); + list.add(model); + + + } + myAdapter.notifyDataSetChanged(); + + } + }).addOnFailureListener(new OnFailureListener() { + @Override + public void onFailure(@NonNull Exception e) { + Toast.makeText(MainActivity.this, "FAiled in Fetching"+e.getMessage(), Toast.LENGTH_SHORT).show(); + } + }); + + } + + private void addTask() { + AlertDialog.Builder builder=new AlertDialog.Builder(this); + View v=LayoutInflater.from(this).inflate(R.layout.activity_additem,null); + builder.setView(v); + + AlertDialog dialog=builder.create(); + dialog.setCancelable(false); + dialog.show(); + + EditText title=v.findViewById(R.id.add_title); + EditText desc=v.findViewById(R.id.add_desc); + Button cancel=v.findViewById(R.id.cancel_button); + Button save=v.findViewById(R.id.save_button); + + cancel.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + dialog.dismiss(); + } + }); + save.setOnClickListener(new View.OnClickListener() { + + @Override + public void onClick(View v) { + + String sTitle=title.getText().toString(); + String sDesc=desc.getText().toString(); + String id= UUID.randomUUID().toString(); + Log.d(TAG, "onClick: save "+sTitle); + Log.d(TAG, "onClick: save "+id); + + if(sTitle.isEmpty()){ + Toast.makeText(MainActivity.this, "Emplty title", Toast.LENGTH_SHORT).show(); + title.setError("Enter Value"); + + } + + else + { + Map map = new HashMap<>(); + map.put("id",id); + map.put("title",sTitle); + map.put("description",sDesc); + + firebaseFirestore.collection("task").document(id).set(map).addOnCompleteListener(new OnCompleteListener() { + @Override + public void onComplete(@NonNull Task task) { + if(task.isSuccessful()){ + Toast.makeText(MainActivity.this, "Added Succesfully", Toast.LENGTH_SHORT).show(); + } + } + }).addOnFailureListener(new OnFailureListener() { + @Override + public void onFailure(@NonNull Exception e) { + Toast.makeText(MainActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show(); + } + }); + + } + showData(); + dialog.dismiss(); + } + }); + + + + + } +} \ No newline at end of file diff --git a/Android/Test/Intermediate/ToDo/app/src/main/java/com/example/todo/Model.java b/Android/Test/Intermediate/ToDo/app/src/main/java/com/example/todo/Model.java new file mode 100644 index 00000000..507ff82f --- /dev/null +++ b/Android/Test/Intermediate/ToDo/app/src/main/java/com/example/todo/Model.java @@ -0,0 +1,37 @@ +package com.example.todo; + +public class Model { + String title,desc,id; + + public Model(){} + + public Model(String title, String desc, String id) { + this.title = title; + this.desc = desc; + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } +} diff --git a/Android/Test/Intermediate/ToDo/app/src/main/java/com/example/todo/MyAdapter.java b/Android/Test/Intermediate/ToDo/app/src/main/java/com/example/todo/MyAdapter.java new file mode 100644 index 00000000..9218eda1 --- /dev/null +++ b/Android/Test/Intermediate/ToDo/app/src/main/java/com/example/todo/MyAdapter.java @@ -0,0 +1,155 @@ +package com.example.todo; + +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; +import android.widget.EditText; +import android.widget.TextView; +import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.appcompat.app.AlertDialog; +import androidx.cardview.widget.CardView; +import androidx.recyclerview.widget.RecyclerView; + +import com.google.android.gms.tasks.OnCompleteListener; +import com.google.android.gms.tasks.Task; +import com.google.firebase.firestore.DocumentSnapshot; +import com.google.firebase.firestore.FirebaseFirestore; +import com.google.firebase.firestore.QuerySnapshot; + +import java.util.List; + +public class MyAdapter extends RecyclerView.Adapter { + private static final String TAG = "MyAdapter"; + + + List myList; + String uTitle; + String uDesc,uId; + FirebaseFirestore db; + + public MyAdapter(List myList) { + this.myList = myList; + } + + @NonNull + @Override + public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item, parent, false); + return new MyViewHolder(v); + } + + @Override + public void onBindViewHolder(@NonNull MyViewHolder holder, int position) { + + holder.title.setText(myList.get(position).title); + holder.desc.setText(myList.get(position).desc); + holder.card.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + + uTitle=myList.get(position).title; + uDesc=myList.get(position).desc; + uId=myList.get(position).id; + + updateTask(v,uId,position); + + + } + }); + + } + + private void updateTask(View v,String uId,int position) { + AlertDialog.Builder builder=new AlertDialog.Builder(v.getContext()); + View updateView=LayoutInflater.from(v.getContext()).inflate(R.layout.update,null); + builder.setView(updateView); + + AlertDialog dialog=builder.create(); + dialog.setCancelable(false); + dialog.show(); + + EditText upTitle=updateView.findViewById(R.id.update_title); + EditText upDesc=updateView.findViewById(R.id.update_desc); + Button delete=updateView.findViewById(R.id.delete_button); + Button update=updateView.findViewById(R.id.update_button); + + upTitle.setText(uTitle); + upDesc.setText(uDesc); + + update.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + updateFireStore(upTitle.getText().toString(),upDesc.getText().toString(),uId,v,dialog,position); + + + } + }); + delete.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + deleteItem(uId,v,dialog); + } + }); + + + + + + } + + private void deleteItem(String uId,View v,AlertDialog d) { + FirebaseFirestore db; + db=FirebaseFirestore.getInstance(); + db.collection("task").document(uId).delete().addOnCompleteListener(new OnCompleteListener() { + @Override + public void onComplete(@NonNull Task task) { + if(task.isSuccessful()) + Toast.makeText(v.getContext(), "Deleted", Toast.LENGTH_SHORT).show(); + + } + }); + d.dismiss(); + + + } + + private void updateFireStore(String tit,String des,String id,View v,AlertDialog d,int position) { + FirebaseFirestore db; + db=FirebaseFirestore.getInstance(); + db.collection("task").document(id).update("title",tit,"description",des).addOnCompleteListener(new OnCompleteListener() { + @Override + public void onComplete(@NonNull Task task) { + if(task.isSuccessful()) + Toast.makeText(v.getContext(), "Updated", Toast.LENGTH_SHORT).show(); + } + }); + d.dismiss(); + + + } + + + + @Override + public int getItemCount() { + return myList.size(); + } + + public static class MyViewHolder extends RecyclerView.ViewHolder { + + TextView title, desc; + CardView card; + + + public MyViewHolder(@NonNull View itemView) { + super(itemView); + title = itemView.findViewById(R.id.title_text); + desc = itemView.findViewById(R.id.desc_text); + card = itemView.findViewById(R.id.card); + } + } +} diff --git a/Android/Test/Intermediate/ToDo/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/Android/Test/Intermediate/ToDo/app/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 00000000..2b068d11 --- /dev/null +++ b/Android/Test/Intermediate/ToDo/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Android/Test/Intermediate/ToDo/app/src/main/res/drawable/ic_baseline_add_24.xml b/Android/Test/Intermediate/ToDo/app/src/main/res/drawable/ic_baseline_add_24.xml new file mode 100644 index 00000000..9eb39c35 --- /dev/null +++ b/Android/Test/Intermediate/ToDo/app/src/main/res/drawable/ic_baseline_add_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/Android/Test/Intermediate/ToDo/app/src/main/res/drawable/ic_baseline_short_text_24.xml b/Android/Test/Intermediate/ToDo/app/src/main/res/drawable/ic_baseline_short_text_24.xml new file mode 100644 index 00000000..f4564e2b --- /dev/null +++ b/Android/Test/Intermediate/ToDo/app/src/main/res/drawable/ic_baseline_short_text_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/Android/Test/Intermediate/ToDo/app/src/main/res/drawable/ic_launcher_background.xml b/Android/Test/Intermediate/ToDo/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 00000000..07d5da9c --- /dev/null +++ b/Android/Test/Intermediate/ToDo/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Android/Test/Intermediate/ToDo/app/src/main/res/layout/activity_additem.xml b/Android/Test/Intermediate/ToDo/app/src/main/res/layout/activity_additem.xml new file mode 100644 index 00000000..1e4e1f9d --- /dev/null +++ b/Android/Test/Intermediate/ToDo/app/src/main/res/layout/activity_additem.xml @@ -0,0 +1,75 @@ + + + + + + + + + + +