From bb42f54680aea8b4cb5fdf2202e5d2320a87ec24 Mon Sep 17 00:00:00 2001 From: SonamAgrahari Date: Wed, 11 May 2022 19:36:09 +0530 Subject: [PATCH 1/3] added coil library --- app/build.gradle | 2 + .../adapter/DatabaseAdapter.kt | 14 ++++- .../adapter/FirestormsAdapter.kt | 14 ++++- .../firebaseandroid/ui/TeacherFragment.kt | 52 +++++++++++++----- app/src/main/res/drawable/profilecircle.png | Bin 0 -> 32086 bytes .../main/res/layout/fragment_student_list.xml | 3 +- app/src/main/res/layout/fragment_teacher.xml | 2 +- app/src/main/res/layout/row_dbshow.xml | 14 ++++- 8 files changed, 75 insertions(+), 26 deletions(-) create mode 100644 app/src/main/res/drawable/profilecircle.png diff --git a/app/build.gradle b/app/build.gradle index ec81a71..53763ed 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -84,5 +84,7 @@ dependencies { // Glide annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0' } + //coil library + implementation("io.coil-kt:coil:2.0.0-rc03") } apply plugin: 'com.google.gms.google-services' \ No newline at end of file diff --git a/app/src/main/java/com/thecodework/firebaseandroid/adapter/DatabaseAdapter.kt b/app/src/main/java/com/thecodework/firebaseandroid/adapter/DatabaseAdapter.kt index b95bbd8..6c4d465 100644 --- a/app/src/main/java/com/thecodework/firebaseandroid/adapter/DatabaseAdapter.kt +++ b/app/src/main/java/com/thecodework/firebaseandroid/adapter/DatabaseAdapter.kt @@ -5,8 +5,11 @@ import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.ImageView import android.widget.TextView import androidx.recyclerview.widget.RecyclerView +import coil.load +import coil.transform.CircleCropTransformation import com.bumptech.glide.Glide import com.mikhaellopez.circularimageview.CircularImageView import com.thecodework.firebaseandroid.R @@ -35,8 +38,13 @@ class DatabaseAdapter( holder.tvEmail.text = arrayList[position].email Log.d("url", arrayList[position].url.toString()) if (context != null) { - Glide.with(context).load(arrayList[position].url).placeholder(R.drawable.profile) - .into(holder.imageProfile) + /* Glide.with(context).load(arrayList[position].url).placeholder(R.drawable.profile) + .into(holder.imageProfile)*/ + holder.imageProfile.load(arrayList[position].url) { + crossfade(true) + placeholder(R.drawable.profile) + transformations(CircleCropTransformation()) + } } } @@ -45,6 +53,6 @@ class DatabaseAdapter( val tvNumber: TextView = itemView.findViewById(R.id.tvNumber) val tvAddress: TextView = itemView.findViewById(R.id.tvAddress) val tvEmail: TextView = itemView.findViewById(R.id.tvEmail) - val imageProfile: CircularImageView = itemView.findViewById(R.id.imageProfile) + val imageProfile: ImageView = itemView.findViewById(R.id.imageProfile) } } \ No newline at end of file diff --git a/app/src/main/java/com/thecodework/firebaseandroid/adapter/FirestormsAdapter.kt b/app/src/main/java/com/thecodework/firebaseandroid/adapter/FirestormsAdapter.kt index fb9f014..036b743 100644 --- a/app/src/main/java/com/thecodework/firebaseandroid/adapter/FirestormsAdapter.kt +++ b/app/src/main/java/com/thecodework/firebaseandroid/adapter/FirestormsAdapter.kt @@ -4,8 +4,11 @@ import android.content.Context import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.ImageView import android.widget.TextView import androidx.recyclerview.widget.RecyclerView +import coil.load +import coil.transform.CircleCropTransformation import com.bumptech.glide.Glide import com.mikhaellopez.circularimageview.CircularImageView import com.thecodework.firebaseandroid.R @@ -32,8 +35,13 @@ class FirestormsAdapter( holder.tvNumber.text = arrayList[position].number holder.tvAddress.text = arrayList[position].address holder.tvEmail.text = arrayList[position].email - Glide.with(context).load(arrayList[position].url).placeholder(R.drawable.profile) - .into(holder.imageProfile) + holder.imageProfile.load(arrayList[position].url) { + crossfade(true) + placeholder(R.drawable.profile) + transformations(CircleCropTransformation()) + } + /* Glide.with(context).load(arrayList[position].url).placeholder(R.drawable.profile) + .into(holder.imageProfile)*/ } class Holder(itemView: View) : RecyclerView.ViewHolder(itemView) { @@ -41,6 +49,6 @@ class FirestormsAdapter( val tvNumber: TextView = itemView.findViewById(R.id.tvNumber) val tvAddress: TextView = itemView.findViewById(R.id.tvAddress) val tvEmail: TextView = itemView.findViewById(R.id.tvEmail) - val imageProfile: CircularImageView = itemView.findViewById(R.id.imageProfile) + val imageProfile: ImageView = itemView.findViewById(R.id.imageProfile) } } \ No newline at end of file diff --git a/app/src/main/java/com/thecodework/firebaseandroid/ui/TeacherFragment.kt b/app/src/main/java/com/thecodework/firebaseandroid/ui/TeacherFragment.kt index 14c2aab..ec8ad97 100644 --- a/app/src/main/java/com/thecodework/firebaseandroid/ui/TeacherFragment.kt +++ b/app/src/main/java/com/thecodework/firebaseandroid/ui/TeacherFragment.kt @@ -55,15 +55,6 @@ class TeacherFragment : Fragment() { } private fun setClickListener() { - binding.tvUpload.setOnClickListener(View.OnClickListener { - val intent = Intent() - intent.type = "image/*" - intent.action = Intent.ACTION_GET_CONTENT - startActivityForResult( - Intent.createChooser(intent, "Select Picture"), - imageRequest - ) - }) binding.btnSave.setOnClickListener(View.OnClickListener { binding.progress.visibility = View.VISIBLE if (filePath != null) { @@ -71,7 +62,7 @@ class TeacherFragment : Fragment() { ref?.putFile(filePath!!)?.addOnSuccessListener { taskSnapshot -> taskSnapshot.storage.downloadUrl.addOnSuccessListener { binding.progress.visibility = View.GONE - binding.imageProfile.setImageResource(R.drawable.ic_launcher_foreground) + binding.imageProfile.setImageResource(R.drawable.profile) var imageUrl = it.toString() Log.d("TAG", "url$imageUrl") name = binding.edName.text.toString() @@ -79,42 +70,66 @@ class TeacherFragment : Fragment() { address = binding.edAddress.text.toString() email = binding.edEmail.text.toString() if (name.isEmpty() || number.isEmpty() || address.isEmpty() || email.isEmpty()) { + Log.d( + "TAG", + "Enter if" + ) Toast.makeText( activity, "Enter All Field", Toast.LENGTH_LONG ).show() binding.progress.visibility = View.GONE } else { - var hashMap: HashMap = HashMap() + Log.d( + "TAG", + "1" + ) + val hashMap: HashMap = HashMap() hashMap.put("name", name) hashMap.put("number", number) hashMap.put("address", address) hashMap.put("email", email) hashMap.put("url", imageUrl) + Log.d( + "TAG", + "2" + ) FirebaseFirestore.getInstance().collection("users") .add(hashMap) .addOnSuccessListener { documentReference -> Log.d( - ContentValues.TAG, + "TAG", "DocumentSnapshot added with ID: ${documentReference.id}" ) Toast.makeText( activity, "Save", Toast.LENGTH_LONG ).show() + Log.d( + "TAG", + "Save data" + ) startActivity( Intent( - activity, + context, ShowFirestoreActivity::class.java ) ) + Log.d( + "TAG", + "3" + ) binding.edName.text.clear() binding.edNumber.text.clear() binding.edAddress.text.clear() binding.edEmail.text.clear() + Log.d( + "TAG", + "4" + ) } .addOnFailureListener { e -> - Log.d(ContentValues.TAG, "Error adding document", e) + Log.d("TAG", "Error adding document", e) } } } @@ -135,6 +150,15 @@ class TeacherFragment : Fragment() { } }) + binding.tvUpload.setOnClickListener(View.OnClickListener { + val intent = Intent() + intent.type = "image/*" + intent.action = Intent.ACTION_GET_CONTENT + startActivityForResult( + Intent.createChooser(intent, "Select Picture"), + imageRequest + ) + }) } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { diff --git a/app/src/main/res/drawable/profilecircle.png b/app/src/main/res/drawable/profilecircle.png new file mode 100644 index 0000000000000000000000000000000000000000..db741fc74d26c4a658b37898ea83803916de169c GIT binary patch literal 32086 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 z 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/fragment_student_list.xml b/app/src/main/res/layout/fragment_student_list.xml index 488db82..8d1fcb5 100644 --- a/app/src/main/res/layout/fragment_student_list.xml +++ b/app/src/main/res/layout/fragment_student_list.xml @@ -5,8 +5,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/black" - tools:context=".ui.ShowActivity"> - + > + > - - --> + From 0a9c95356b52e37b36c873e7286b6e0c065ac8b8 Mon Sep 17 00:00:00 2001 From: SonamAgrahari Date: Thu, 12 May 2022 11:43:15 +0530 Subject: [PATCH 2/3] optimize code --- .../adapter/DatabaseAdapter.kt | 8 +++--- .../adapter/FirestormsAdapter.kt | 2 -- .../ui/ShowFirestoreActivity.kt | 4 +-- .../firebaseandroid/ui/StudentFragment.kt | 1 - .../firebaseandroid/ui/StudentListFragment.kt | 2 +- .../firebaseandroid/ui/TeacherFragment.kt | 27 ++++++++++--------- app/src/main/res/layout/row_dbshow.xml | 12 ++------- 7 files changed, 23 insertions(+), 33 deletions(-) diff --git a/app/src/main/java/com/thecodework/firebaseandroid/adapter/DatabaseAdapter.kt b/app/src/main/java/com/thecodework/firebaseandroid/adapter/DatabaseAdapter.kt index 6c4d465..1799a59 100644 --- a/app/src/main/java/com/thecodework/firebaseandroid/adapter/DatabaseAdapter.kt +++ b/app/src/main/java/com/thecodework/firebaseandroid/adapter/DatabaseAdapter.kt @@ -3,13 +3,16 @@ package com.thecodework.firebaseandroid.adapter import android.content.Context import android.util.Log import android.view.LayoutInflater +import android.view.RoundedCorner import android.view.View import android.view.ViewGroup import android.widget.ImageView import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import coil.load +import coil.request.CachePolicy import coil.transform.CircleCropTransformation +import coil.transform.RoundedCornersTransformation import com.bumptech.glide.Glide import com.mikhaellopez.circularimageview.CircularImageView import com.thecodework.firebaseandroid.R @@ -38,12 +41,11 @@ class DatabaseAdapter( holder.tvEmail.text = arrayList[position].email Log.d("url", arrayList[position].url.toString()) if (context != null) { - /* Glide.with(context).load(arrayList[position].url).placeholder(R.drawable.profile) - .into(holder.imageProfile)*/ holder.imageProfile.load(arrayList[position].url) { crossfade(true) placeholder(R.drawable.profile) - transformations(CircleCropTransformation()) + memoryCachePolicy(CachePolicy.ENABLED) + transformations(RoundedCornersTransformation(20f)) } } } diff --git a/app/src/main/java/com/thecodework/firebaseandroid/adapter/FirestormsAdapter.kt b/app/src/main/java/com/thecodework/firebaseandroid/adapter/FirestormsAdapter.kt index 036b743..e864222 100644 --- a/app/src/main/java/com/thecodework/firebaseandroid/adapter/FirestormsAdapter.kt +++ b/app/src/main/java/com/thecodework/firebaseandroid/adapter/FirestormsAdapter.kt @@ -40,8 +40,6 @@ class FirestormsAdapter( placeholder(R.drawable.profile) transformations(CircleCropTransformation()) } - /* Glide.with(context).load(arrayList[position].url).placeholder(R.drawable.profile) - .into(holder.imageProfile)*/ } class Holder(itemView: View) : RecyclerView.ViewHolder(itemView) { diff --git a/app/src/main/java/com/thecodework/firebaseandroid/ui/ShowFirestoreActivity.kt b/app/src/main/java/com/thecodework/firebaseandroid/ui/ShowFirestoreActivity.kt index e9892ad..17b7164 100644 --- a/app/src/main/java/com/thecodework/firebaseandroid/ui/ShowFirestoreActivity.kt +++ b/app/src/main/java/com/thecodework/firebaseandroid/ui/ShowFirestoreActivity.kt @@ -1,16 +1,14 @@ package com.thecodework.firebaseandroid.ui -import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.view.View +import androidx.appcompat.app.AppCompatActivity import com.google.firebase.firestore.FirebaseFirestore import com.thecodework.firebaseandroid.R -import com.thecodework.firebaseandroid.adapter.DatabaseAdapter import com.thecodework.firebaseandroid.adapter.FirestormsAdapter import com.thecodework.firebaseandroid.databinding.ActivityShowFirestoreBinding import com.thecodework.firebaseandroid.model.ModelDbshow import com.thecodework.firebaseandroid.util.Utils -import java.util.ArrayList class ShowFirestoreActivity : AppCompatActivity() { lateinit var binding: ActivityShowFirestoreBinding diff --git a/app/src/main/java/com/thecodework/firebaseandroid/ui/StudentFragment.kt b/app/src/main/java/com/thecodework/firebaseandroid/ui/StudentFragment.kt index a3b61b7..2973fab 100644 --- a/app/src/main/java/com/thecodework/firebaseandroid/ui/StudentFragment.kt +++ b/app/src/main/java/com/thecodework/firebaseandroid/ui/StudentFragment.kt @@ -11,7 +11,6 @@ import android.view.View import android.view.ViewGroup import android.widget.Toast import androidx.fragment.app.Fragment -import com.google.android.gms.tasks.OnFailureListener import com.google.firebase.database.FirebaseDatabase import com.google.firebase.storage.FirebaseStorage import com.google.firebase.storage.StorageReference diff --git a/app/src/main/java/com/thecodework/firebaseandroid/ui/StudentListFragment.kt b/app/src/main/java/com/thecodework/firebaseandroid/ui/StudentListFragment.kt index 3b56907..b07908d 100644 --- a/app/src/main/java/com/thecodework/firebaseandroid/ui/StudentListFragment.kt +++ b/app/src/main/java/com/thecodework/firebaseandroid/ui/StudentListFragment.kt @@ -26,7 +26,7 @@ class StudentListFragment : Fragment() { override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { + ): View { binding = FragmentStudentListBinding.inflate(inflater, container, false) initializer() return binding.root diff --git a/app/src/main/java/com/thecodework/firebaseandroid/ui/TeacherFragment.kt b/app/src/main/java/com/thecodework/firebaseandroid/ui/TeacherFragment.kt index ec8ad97..66a0d67 100644 --- a/app/src/main/java/com/thecodework/firebaseandroid/ui/TeacherFragment.kt +++ b/app/src/main/java/com/thecodework/firebaseandroid/ui/TeacherFragment.kt @@ -1,18 +1,16 @@ package com.thecodework.firebaseandroid.ui import android.app.Activity -import android.content.ContentValues import android.content.Intent import android.net.Uri import android.os.Bundle import android.provider.MediaStore import android.util.Log -import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.Toast -import com.google.android.gms.tasks.OnFailureListener +import androidx.fragment.app.Fragment import com.google.firebase.firestore.FirebaseFirestore import com.google.firebase.storage.FirebaseStorage import com.google.firebase.storage.StorageReference @@ -20,7 +18,6 @@ import com.thecodework.firebaseandroid.R import com.thecodework.firebaseandroid.databinding.FragmentTeacherBinding import java.io.IOException import java.util.* -import kotlin.collections.HashMap class TeacherFragment : Fragment() { private lateinit var binding: FragmentTeacherBinding @@ -28,7 +25,7 @@ class TeacherFragment : Fragment() { lateinit var number: String lateinit var email: String lateinit var address: String - val imageRequest = 1 + private val imageRequest = 1 private var firebaseStore: FirebaseStorage? = null private var storageReference: StorageReference? = null private var filePath: Uri? = null @@ -42,7 +39,7 @@ class TeacherFragment : Fragment() { override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { + ): View { binding = FragmentTeacherBinding.inflate(inflater, container, false) initializer() setClickListener() @@ -55,7 +52,7 @@ class TeacherFragment : Fragment() { } private fun setClickListener() { - binding.btnSave.setOnClickListener(View.OnClickListener { + binding.btnSave.setOnClickListener { binding.progress.visibility = View.VISIBLE if (filePath != null) { val ref = storageReference?.child("uploads/" + UUID.randomUUID().toString()) @@ -63,7 +60,7 @@ class TeacherFragment : Fragment() { taskSnapshot.storage.downloadUrl.addOnSuccessListener { binding.progress.visibility = View.GONE binding.imageProfile.setImageResource(R.drawable.profile) - var imageUrl = it.toString() + val imageUrl = it.toString() Log.d("TAG", "url$imageUrl") name = binding.edName.text.toString() number = binding.edNumber.text.toString() @@ -129,19 +126,23 @@ class TeacherFragment : Fragment() { ) } .addOnFailureListener { e -> + Toast.makeText( + activity, "Error" + e.message, + Toast.LENGTH_LONG + ).show() Log.d("TAG", "Error adding document", e) } } } } - ?.addOnFailureListener(OnFailureListener { e -> + ?.addOnFailureListener { e -> Toast.makeText( activity, e.message, Toast.LENGTH_LONG ).show() Log.d("TAG", e.message.toString()) - }) + } } else { @@ -149,8 +150,8 @@ class TeacherFragment : Fragment() { binding.progress.visibility = View.GONE } - }) - binding.tvUpload.setOnClickListener(View.OnClickListener { + } + binding.tvUpload.setOnClickListener { val intent = Intent() intent.type = "image/*" intent.action = Intent.ACTION_GET_CONTENT @@ -158,7 +159,7 @@ class TeacherFragment : Fragment() { Intent.createChooser(intent, "Select Picture"), imageRequest ) - }) + } } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { diff --git a/app/src/main/res/layout/row_dbshow.xml b/app/src/main/res/layout/row_dbshow.xml index 82c4acb..2b67912 100644 --- a/app/src/main/res/layout/row_dbshow.xml +++ b/app/src/main/res/layout/row_dbshow.xml @@ -105,22 +105,14 @@ android:textSize="16dp" android:textStyle="bold" /> - + From 4eeb529d1db594c08b2ee3a718cd62f7499a4f5f Mon Sep 17 00:00:00 2001 From: SonamAgrahari Date: Thu, 12 May 2022 11:51:15 +0530 Subject: [PATCH 3/3] otimize adapter codes --- .../thecodework/firebaseandroid/adapter/DatabaseAdapter.kt | 4 ---- .../thecodework/firebaseandroid/adapter/FirestormsAdapter.kt | 2 -- .../com/thecodework/firebaseandroid/ui/BottomnavActivity.kt | 5 ++--- 3 files changed, 2 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/thecodework/firebaseandroid/adapter/DatabaseAdapter.kt b/app/src/main/java/com/thecodework/firebaseandroid/adapter/DatabaseAdapter.kt index 1799a59..3962b63 100644 --- a/app/src/main/java/com/thecodework/firebaseandroid/adapter/DatabaseAdapter.kt +++ b/app/src/main/java/com/thecodework/firebaseandroid/adapter/DatabaseAdapter.kt @@ -3,7 +3,6 @@ package com.thecodework.firebaseandroid.adapter import android.content.Context import android.util.Log import android.view.LayoutInflater -import android.view.RoundedCorner import android.view.View import android.view.ViewGroup import android.widget.ImageView @@ -11,10 +10,7 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import coil.load import coil.request.CachePolicy -import coil.transform.CircleCropTransformation import coil.transform.RoundedCornersTransformation -import com.bumptech.glide.Glide -import com.mikhaellopez.circularimageview.CircularImageView import com.thecodework.firebaseandroid.R import com.thecodework.firebaseandroid.model.ModelDbshow diff --git a/app/src/main/java/com/thecodework/firebaseandroid/adapter/FirestormsAdapter.kt b/app/src/main/java/com/thecodework/firebaseandroid/adapter/FirestormsAdapter.kt index e864222..e39355c 100644 --- a/app/src/main/java/com/thecodework/firebaseandroid/adapter/FirestormsAdapter.kt +++ b/app/src/main/java/com/thecodework/firebaseandroid/adapter/FirestormsAdapter.kt @@ -9,8 +9,6 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import coil.load import coil.transform.CircleCropTransformation -import com.bumptech.glide.Glide -import com.mikhaellopez.circularimageview.CircularImageView import com.thecodework.firebaseandroid.R import com.thecodework.firebaseandroid.model.ModelDbshow diff --git a/app/src/main/java/com/thecodework/firebaseandroid/ui/BottomnavActivity.kt b/app/src/main/java/com/thecodework/firebaseandroid/ui/BottomnavActivity.kt index 9d6ed49..0198c3b 100644 --- a/app/src/main/java/com/thecodework/firebaseandroid/ui/BottomnavActivity.kt +++ b/app/src/main/java/com/thecodework/firebaseandroid/ui/BottomnavActivity.kt @@ -3,7 +3,6 @@ package com.thecodework.firebaseandroid.ui import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import androidx.fragment.app.Fragment -import com.google.android.material.navigation.NavigationBarView import com.thecodework.firebaseandroid.R import com.thecodework.firebaseandroid.databinding.ActivityBottomnavBinding import com.thecodework.firebaseandroid.util.Utils @@ -19,7 +18,7 @@ class BottomnavActivity : AppCompatActivity() { } private fun setlistener() { - binding.bottomNav.setOnItemSelectedListener(NavigationBarView.OnItemSelectedListener { item -> + binding.bottomNav.setOnItemSelectedListener { item -> var f: Fragment? = null when (item.itemId) { R.id.menu_student -> f = StudentFragment() @@ -28,7 +27,7 @@ class BottomnavActivity : AppCompatActivity() { } supportFragmentManager.beginTransaction().replace(R.id.main_Layout, f!!).commit() true - }) + } } private fun initailizer() {