How to Create a Shayari Android App Using Firebase in Kotlin?
source link: https://www.geeksforgeeks.org/how-to-create-a-shayari-android-app-using-firebase-in-kotlin/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
How to Create a Shayari Android App Using Firebase in Kotlin?
- Home
- Saved Videos
- Courses
For Working Professionals
For Students
Programming Languages
Web Development
Machine Learning and Data Science
New Courses
School Courses
Data Structures
Algorithms
Analysis of Algorithms
System Design
Interview Corner
Languages
Web Development
CSS Frameworks
JavaScript Frameworks
JavaScript Libraries
School Learning
Mathematics
CBSE Syllabus
Maths Notes (Class 8-12)
Maths Formulas (Class 8 -11)
NCERT Solutions
RD Sharma Solutions
Science Notes
Physics Notes (Class 8-12)
Chemistry Notes (Class 8-12)
Biology Notes
Social Science Syllabus
Social Science Notes
SS Notes (Class 7-12)
CBSE History Notes (Class 7-10)
CBSE Geography Notes (Class 7-10)
CBSE Civics Notes (Class 7-10)
Commerce
CBSE Previous Year Papers
ML & Data Science
CS Subjects
GFG Sheets
Web Dev Cheat Sheets
Company-Wise SDE Sheets
DSA Sheets
CS Exams/PSUs
UGC NET
Student
SSC CGL
Banking Exams
SBI Clerk
SBI PO
IBPS PO
IBPS Clerk
Curated DSA Lists
Tutorials
Practice
Contests
- GBlog
- Puzzles
- What's New ?
Related Articles
How to Create a Shayari Android App Using Firebase in Kotlin?
- Last Updated : 08 Apr, 2023
A Shayari app built in android studio consists of various Shayaries and categories of it using Firebase for database purposes, also you can add as many Shayaries and categories of it, indirectly to the firebases the user can access and also have share functionality on WhatsApp as well. A sample video is given below to get an idea about what we are going to do in this article.
Step by Step Implementation
Step 1: Create a New Project in Android Studio
To create a new project in Android Studio please refer to How to Create/Start a New Project in Android Studio. Note that select Kotlin as the programming language.
Step 2: Set up the development environment
Add firebase real-time database dependency in build.gradle(app) file
implementation 'com.google.firebase:firebase-firestore:24.4.0' implementation 'com.google.firebase:firebase-firestore-ktx:24.4.0'
Add View binding inside android{} block in build.gradle(app) file
buildFeatures { viewBinding = true }
Step 3: Create a new Firebase Project
Have a look at Adding Firebase to Android App also add a Real-time database to your firebase project.
Step 4: Design the app’s user interface
Navigate to the app > res > layout > activity_main.xml and add the below code to that file. Below is the code for the activity_main.xml file.
activity_main.xml
<? xml version = "1.0" encoding = "utf-8" ?> < androidx.drawerlayout.widget.DrawerLayout android:id = "@+id/drawerLayout" android:layout_width = "match_parent" android:layout_height = "match_parent" tools:context = ".MainActivity" > < RelativeLayout android:layout_width = "match_parent" android:layout_height = "match_parent" > < LinearLayout android:id = "@+id/toolbar" android:layout_width = "match_parent" android:layout_height = "50dp" android:gravity = "center_vertical" android:orientation = "horizontal" android:background = "@color/red" > < ImageView android:id = "@+id/btnMenu" android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:layout_marginStart = "20dp" android:backgroundTint = "@color/white" android:src = "@drawable/ic_baseline_menu_24" /> < TextView android:layout_width = "match_parent" android:layout_height = "wrap_content" android:layout_marginStart = "10dp" android:fontFamily = "@font/bold" android:text = "Hindi Shayari" android:textColor = "@color/white" android:textSize = "20sp" /> </ LinearLayout > < androidx.recyclerview.widget.RecyclerView android:layout_width = "match_parent" android:layout_height = "match_parent" android:id = "@+id/rcvCategory" android:layout_below = "@id/toolbar" /> </ RelativeLayout > </ androidx.drawerlayout.widget.DrawerLayout > |
activity_start.xml
<? xml version = "1.0" encoding = "utf-8" ?> < androidx.constraintlayout.widget.ConstraintLayout android:layout_width = "match_parent" android:layout_height = "match_parent" tools:context = ".StartActivity" > < LinearLayout android:id = "@+id/linearLayout" android:layout_width = "match_parent" android:layout_height = "45dp" android:background = "#D62828" android:gravity = "center_vertical" android:orientation = "horizontal" app:layout_constraintEnd_toEndOf = "parent" app:layout_constraintStart_toStartOf = "parent" app:layout_constraintTop_toTopOf = "parent" > < TextView android:layout_width = "match_parent" android:layout_height = "wrap_content" android:layout_marginStart = "10dp" android:fontFamily = "@font/bold" android:text = "Hindi Shayari" android:textColor = "@color/white" android:textSize = "20sp" /> </ LinearLayout > < LinearLayout android:layout_width = "match_parent" android:layout_height = "wrap_content" android:orientation = "vertical" app:layout_constraintBottom_toBottomOf = "parent" app:layout_constraintEnd_toEndOf = "parent" app:layout_constraintStart_toStartOf = "parent" app:layout_constraintTop_toBottomOf = "@+id/linearLayout" > < TextView android:id = "@+id/btnStart" android:layout_marginTop = "15dp" android:layout_width = "match_parent" android:layout_height = "wrap_content" android:layout_marginStart = "20dp" android:layout_marginEnd = "20sp" android:background = "@drawable/btn_shape" android:fontFamily = "@font/bold" android:gravity = "center" android:padding = "15dp" android:text = "Start" android:textColor = "@color/white" android:textSize = "20sp" /> < TextView android:id = "@+id/btnRate" android:layout_width = "match_parent" android:layout_height = "wrap_content" android:layout_marginStart = "20dp" android:layout_marginTop = "15dp" android:layout_marginEnd = "20sp" android:background = "@drawable/btn_shape" android:fontFamily = "@font/bold" android:gravity = "center" android:padding = "15dp" android:text = "Rate" android:textColor = "@color/white" android:textSize = "20sp" /> < TextView android:id = "@+id/btnMore" android:layout_width = "match_parent" android:layout_marginBottom = "15dp" android:layout_height = "wrap_content" android:layout_marginStart = "20dp" android:layout_marginTop = "15dp" android:layout_marginEnd = "20sp" android:background = "@drawable/btn_shape" android:fontFamily = "@font/bold" android:gravity = "center" android:padding = "15dp" android:text = "More" android:textColor = "@color/white" android:textSize = "20sp" /> </ LinearLayout > </ androidx.constraintlayout.widget.ConstraintLayout > |
activity_all_shayari.xml
<? xml version = "1.0" encoding = "utf-8" ?> < RelativeLayout android:layout_width = "match_parent" android:layout_height = "match_parent" tools:context = ".AllShayariActivity" > < LinearLayout android:id = "@+id/toolbar" android:layout_width = "match_parent" android:layout_height = "50dp" android:gravity = "center_vertical" android:background = "@color/red" > < ImageView android:id = "@+id/btnBack" android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:layout_marginStart = "20dp" android:backgroundTint = "@color/white" android:src = "@drawable/ic_baseline_arrow_back_24" /> < TextView android:id = "@+id/catName" android:layout_width = "match_parent" android:layout_height = "wrap_content" android:layout_marginStart = "10dp" android:fontFamily = "@font/bold" android:text = "Hindi Shayari" android:textColor = "@color/white" android:textSize = "20sp" /> </ LinearLayout > < androidx.recyclerview.widget.RecyclerView android:layout_width = "match_parent" android:layout_height = "match_parent" android:layout_below = "@id/toolbar" android:id = "@+id/rcvAllShayari" /> </ RelativeLayout > |
item_category.xml
<? xml version = "1.0" encoding = "utf-8" ?> < LinearLayout android:layout_width = "match_parent" android:layout_height = "wrap_content" android:orientation = "vertical" > < androidx.cardview.widget.CardView android:layout_width = "match_parent" android:layout_height = "80dp" android:layout_margin = "10dp" app:cardCornerRadius = "10dp" > < TextView android:layout_width = "match_parent" android:layout_height = "match_parent" android:id = "@+id/item_txt" android:layout_gravity = "center" android:fontFamily = "@font/bold" android:gravity = "center" android:text = "Hindi Shayari" android:textSize = "25sp" /> </ androidx.cardview.widget.CardView > </ LinearLayout > |
item_shayari.xml
<? xml version = "1.0" encoding = "utf-8" ?> < RelativeLayout android:layout_width = "match_parent" android:layout_height = "wrap_content" > < androidx.cardview.widget.CardView android:layout_width = "match_parent" android:layout_height = "wrap_content" android:layout_margin = "10dp" app:cardCornerRadius = "10dp" > < LinearLayout android:id = "@+id/mainBaground" android:layout_width = "match_parent" android:layout_height = "match_parent" android:orientation = "vertical" > < TextView android:id = "@+id/itemShayari" android:layout_width = "match_parent" android:layout_height = "wrap_content" android:layout_margin = "10dp" android:fontFamily = "@font/bold" android:gravity = "center" android:text = "" android:textColor = "@color/black" android:textSize = "22sp" /> < LinearLayout android:layout_width = "match_parent" android:layout_height = "wrap_content" android:background = "#80000000" android:orientation = "horizontal" android:padding = "10dp" > < FrameLayout android:layout_width = "match_parent" android:layout_height = "match_parent" android:layout_weight = "1" > < LinearLayout android:id = "@+id/btnShare" android:layout_width = "40dp" android:layout_height = "40dp" android:layout_gravity = "center" android:background = "@drawable/btn_round_shape" android:padding = "7dp" > < ImageView android:layout_width = "match_parent" android:layout_height = "match_parent" android:background = "@drawable/ic_baseline_share_24" /> </ LinearLayout > </ FrameLayout > < FrameLayout android:layout_width = "match_parent" android:layout_height = "match_parent" android:layout_weight = "1" > < LinearLayout android:id = "@+id/btnCopy" android:padding = "7dp" android:layout_width = "40dp" android:layout_height = "40dp" android:layout_gravity = "center" android:background = "@drawable/btn_round_shape" > < ImageView android:layout_width = "match_parent" android:layout_height = "match_parent" android:background = "@drawable/ic_baseline_content_copy_24" /> </ LinearLayout > </ FrameLayout > < FrameLayout android:layout_width = "match_parent" android:layout_height = "match_parent" android:layout_weight = "1" > < LinearLayout android:id = "@+id/btnWhatsapp" android:padding = "7dp" android:layout_width = "40dp" android:layout_height = "40dp" android:layout_gravity = "center" android:background = "@drawable/btn_round_shape" > < ImageView android:layout_width = "match_parent" android:layout_height = "match_parent" android:src = "@drawable/whatsapp" /> </ LinearLayout > </ FrameLayout > </ LinearLayout > </ LinearLayout > </ androidx.cardview.widget.CardView > </ RelativeLayout > |
Step 5: Create adapters for shayari
AllShayariAdapter.kt
- Kotlin
package com.note.shayariapp.Adapter import android.content.ActivityNotFoundException import android.content.ClipData import android.content.ClipboardManager import android.content.Context.CLIPBOARD_SERVICE import android.content.Intent import android.view.LayoutInflater import android.view.ViewGroup import android.widget.Toast import androidx.recyclerview.widget.RecyclerView import com.note.shayariapp.AllShayariActivity import com.note.shayariapp.BuildConfig import com.note.shayariapp.Model.ShayariModel import com.note.shayariapp.R import com.note.shayariapp.databinding.ItemShayariBinding class AllShayariAdapter( val allShayariActivity: AllShayariActivity, val shayariList: ArrayList<ShayariModel>) : RecyclerView.Adapter<AllShayariAdapter.ShayariViewHolder>() { class ShayariViewHolder(val binding: ItemShayariBinding) : RecyclerView.ViewHolder(binding.root) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ShayariViewHolder { return ShayariViewHolder( ItemShayariBinding.inflate( LayoutInflater.from(parent.context), parent, false ) ) } override fun onBindViewHolder(holder: ShayariViewHolder, position: Int) { holder.binding.itemShayari.text = shayariList[position].data.toString() holder.binding.btnCopy.setOnClickListener { val clipboard: ClipboardManager? = allShayariActivity.getSystemService(CLIPBOARD_SERVICE) as ClipboardManager? val clip = ClipData.newPlainText( "label" , shayariList[position].data.toString()) clipboard?.setPrimaryClip(clip) Toast.makeText(allShayariActivity, "Shayari Copied Successfully" ,Toast.LENGTH_SHORT).show() } holder.binding.btnShare.setOnClickListener { try { val shareIntent = Intent(Intent.ACTION_SEND) shareIntent.type = "text/plain" shareIntent.putExtra(Intent.EXTRA_SUBJECT, "My application name" ) var shareMessage = "\n${shayariList[position].data}\n\n" shareMessage = "" " ${shareMessage}https: //play.google.com/store/apps/details?id=${BuildConfig.APPLICATION_ID} "" ".trimIndent() shareIntent.putExtra(Intent.EXTRA_TEXT, shareMessage) allShayariActivity.startActivity(Intent.createChooser(shareIntent, "choose one" )) } catch (e: Exception) { //e.toString(); } true } holder.binding.btnWhatsapp.setOnClickListener { val whatsappIntent = Intent(Intent.ACTION_SEND) whatsappIntent.type = "text/plain" whatsappIntent.setPackage( "com.whatsapp" ) whatsappIntent.putExtra(Intent.EXTRA_TEXT, shayariList[position].data.toString()) try { allShayariActivity.startActivity(whatsappIntent) } catch (ex: ActivityNotFoundException) { } } } override fun getItemCount() = shayariList.size } |
CategoryAdapter.kt
- Kotlin
package com.note.shayariapp.Adapter import android.content.Intent import android.graphics.Color.parseColor import android.view.LayoutInflater import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import com.google.firebase.database.collection.LLRBNode.Color import com.note.shayariapp.AllShayariActivity import com.note.shayariapp.MainActivity import com.note.shayariapp.Model.CategoryModel import com.note.shayariapp.StartActivity import com.note.shayariapp.databinding.ItemCategoryBinding class CategoryAdapter(val mainActivity: MainActivity, val list: ArrayList<CategoryModel>) : RecyclerView.Adapter<CategoryAdapter.CatViewHolder>() { class CatViewHolder(val binding: ItemCategoryBinding) : RecyclerView.ViewHolder(binding.root) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CatViewHolder { return CatViewHolder( ItemCategoryBinding.inflate( LayoutInflater.from(parent.context), parent, false ) ) } override fun onBindViewHolder(holder: CatViewHolder, position: Int) { holder.binding.itemTxt.text = list[position].name.toString() holder.binding.root.setOnClickListener { val intent = Intent(mainActivity, AllShayariActivity:: class .java) intent.putExtra( "id" , list[position].id) intent.putExtra( "name" , list[position].name) mainActivity.startActivity(intent) } } override fun getItemCount() = list.size } |
Step 6: Create a Model for Shayari
CategoryModel.kt
- Kotlin
package com.note.shayariapp.Model class CategoryModel( val id: String? = null , val name: String? = null ) |
ShayariModel.kt
- Kotlin
package com.note.shayariapp.Model class ShayariModel( val id: String? = null , val data: String? = null ) |
Step 7: Finally Write code in Activities
AllShayariActivity.kt
- Kotlin
package com.note.shayariapp import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import androidx.appcompat.app.AppCompatDelegate import androidx.recyclerview.widget.LinearLayoutManager import com.google.firebase.firestore.FirebaseFirestore import com.note.shayariapp.Adapter.AllShayariAdapter import com.note.shayariapp.Model.ShayariModel import com.note.shayariapp.databinding.ActivityAllShayariBinding class AllShayariActivity : AppCompatActivity() { lateinit var binding: ActivityAllShayariBinding lateinit var db: FirebaseFirestore override fun onCreate(savedInstanceState: Bundle?) { AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO) super .onCreate(savedInstanceState) binding = ActivityAllShayariBinding.inflate(layoutInflater) setContentView(binding.root) val name = intent.getStringExtra( "name" ) val id = intent.getStringExtra( "id" ) db = FirebaseFirestore.getInstance() binding.btnBack.setOnClickListener { onBackPressed() } binding.catName.text = name.toString() db.collection( "Shayari" ).document(id!!).collection( "all" ) .addSnapshotListener { value, error -> val shayariList = arrayListOf<ShayariModel>() val data = value?.toObjects(ShayariModel:: class .java) shayariList.addAll(data!!) binding.rcvAllShayari.layoutManager = LinearLayoutManager( this ) binding.rcvAllShayari.adapter = AllShayariAdapter( this , shayariList) } } } |
MainActivity.kt
- Kotlin
package com.note.shayariapp import android.content.ActivityNotFoundException import android.content.Intent import android.net.Uri import android.os.Bundle import android.view.Gravity import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatDelegate import androidx.recyclerview.widget.LinearLayoutManager import com.google.firebase.firestore.FirebaseFirestore import com.note.shayariapp.Adapter.CategoryAdapter import com.note.shayariapp.Model.CategoryModel import com.note.shayariapp.databinding.ActivityMainBinding class MainActivity : AppCompatActivity() { lateinit var binding: ActivityMainBinding lateinit var db: FirebaseFirestore override fun onCreate(savedInstanceState: Bundle?) { AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO) super .onCreate(savedInstanceState) binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) db = FirebaseFirestore.getInstance() db.collection( "Shayari" ).addSnapshotListener { value, error -> val list = arrayListOf<CategoryModel>() val data = value?.toObjects(CategoryModel:: class .java) list.addAll(data!!) binding.rcvCategory.layoutManager = LinearLayoutManager( this ) binding.rcvCategory.adapter = CategoryAdapter( this , list) } } override fun onBackPressed() { super .onBackPressed() } } |
StartActivity.kt
- Kotlin
package com.note.shayariapp import android.content.ActivityNotFoundException import android.content.Intent import android.net.Uri import android.os.Bundle import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatDelegate import com.note.shayariapp.databinding.ActivityStartBinding class StartActivity : AppCompatActivity() { lateinit var binding: ActivityStartBinding override fun onCreate(savedInstanceState: Bundle?) { AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO) super .onCreate(savedInstanceState) binding = ActivityStartBinding.inflate(layoutInflater) setContentView(binding.root) binding.btnStart.setOnClickListener { startActivity(Intent( this , MainActivity:: class .java)) } binding.btnRate.setOnClickListener { val myAppLinkToMarket = Intent(Intent.ACTION_VIEW, uri) try { startActivity(myAppLinkToMarket) } catch (e: ActivityNotFoundException) { Toast.makeText( this , " unable to find market app" , Toast.LENGTH_LONG).show() } } binding.btnMore.setOnClickListener { try { startActivity( Intent( Intent.ACTION_VIEW, ) ) } catch (e: ActivityNotFoundException) { startActivity( Intent( Intent.ACTION_VIEW, ) ) } } } } |
Output:
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK