Introduction

Android is an open-source operating system based on Linux with a Java programming interface for mobile devices such as Smartphone (Touch Screen Devices who supports Android OS) as well for Tablets. With over 85% market share worldwide, Android Operating System dominates the mobile platform market. Today, I will show you how to load the Data to RecyclerView and search the Data in Kotlin Android. In this Part i will show the Backend.
Requirements
Steps to be followed.
Follow these steps to load the Data to RecyclerView and search the Data in Kotlin Android Backend.
Step 1
Go to the manifest file and add the dependency for an internet connection.
How To Load The Data To Recyclerview And Search The Data In Kotlin Android
The manifest code is given below,
  1. <uses-permission android:name="android.permission.INTERNET" />
  2. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Step 2
Go to the build.grade file. Add third party dependencies for retrofit and card view.
How To Load The Data To Recyclerview And Search The Data In Kotlin Android
The third party dependencies are given below,
  1. def retrofit = '2.5.0'
  2. implementation 'com.squareup.retrofit2:retrofit:' + retrofit
  3. implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
  4. implementation 'com.squareup.okhttp3:logging-interceptor:3.12.1'
  5. def cardview_version = "1.0.0"
  6. implementation "androidx.legacy:legacy-support-v4:$cardview_version"
  7. implementation "com.google.android.material:material:$cardview_version"
  8. implementation "androidx.cardview:cardview:$cardview_version"
Step 3
Create a new Class file. And name it as ApiClient. This class file used for API Client call which is used to call the API from the server.
How To Load The Data To Recyclerview And Search The Data In Kotlin Android
The Code is given below:
  1. object ApiClient {
  2. var BASE_URL: String = "https://jsonplaceholder.typicode.com/"
  3. val getClient: ApiInterface
  4. get() {
  5. val gson = GsonBuilder().setLenient().create()
  6. val interceptor = HttpLoggingInterceptor()
  7. interceptor.setLevel(HttpLoggingInterceptor.Level.BODY)
  8. val client = OkHttpClient.Builder().addInterceptor(interceptor).build()
  9. val retrofit = Retrofit.Builder().baseUrl(BASE_URL).client(client).addConverterFactory(GsonConverterFactory.create(gson)).build()
  10. return retrofit.create(ApiInterface::class.java)
  11. }
  12. }
Step 4
Create a new Interface for call the API interface.
How To Load The Data To Recyclerview And Search The Data In Kotlin Android
The API interface code is given below,
  1. package com.example.recyclerviewjson
  2. import retrofit2.Call
  3. import retrofit2.http.GET
  4. interface ApiInterface {
  5. @GET("photos")
  6. fun getPhotos(): Call < List < recyclerresponse >>
  7. }
Step 5

Create a new model class file to get the response from API
How To Load The Data To Recyclerview And Search The Data In Kotlin Android
The Model Class is given below,
  1. package com.example.recyclerviewjson
  2. import com.google.gson.annotations.SerializedName
  3. data class recyclerresponse(
  4. @SerializedName("albumId")
  5. var albumId: kotlin.Int,
  6. @SerializedName("id")
  7. var id: kotlin.Int,
  8. @SerializedName("title")
  9. val title: String,
  10. @SerializedName("url")
  11. val url: String,
  12. @SerializedName("thumbnailUrl")
  13. val thumbnailUrl: String)
Step 6
Go to Main Activity.kt. This Kotlin program is the back-end language for your app.
How To Load The Data To Recyclerview And Search The Data In Kotlin Android
The Kotlin code is given below,
  1. package com.example.recyclerviewjson
  2. import android.app.ProgressDialog
  3. import androidx.appcompat.app.AppCompatActivity
  4. import android.os.Bundle
  5. import android.text.Editable
  6. import android.text.TextWatcher
  7. import androidx.recyclerview.widget.LinearLayoutManager
  8. import androidx.recyclerview.widget.RecyclerView
  9. import kotlinx.android.synthetic.main.activity_main.*
  10. import retrofit2.Call
  11. import retrofit2.Callback
  12. import retrofit2.Response
  13. class MainActivity: AppCompatActivity() {
  14. lateinit
  15. var progerssProgressDialog: ProgressDialog
  16. var dataList = ArrayList < recyclerresponse > ()
  17. lateinit
  18. var recyclerView: RecyclerView
  19. private
  20. var myAdapter: DataAdpter ? = null
  21. override fun onCreate(savedInstanceState: Bundle ? ) {
  22. super.onCreate(savedInstanceState)
  23. setContentView(R.layout.activity_main)
  24. recyclerView = findViewById(R.id.brandlist)
  25. myAdapter = DataAdpter(dataList, this)
  26. recyclerView.adapter = myAdapter
  27. recyclerView.layoutManager = LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
  28. progerssProgressDialog = ProgressDialog(this)
  29. progerssProgressDialog.setTitle("Loading")
  30. progerssProgressDialog.setCancelable(false)
  31. progerssProgressDialog.show()
  32. getDat1a()
  33. searchbrandedit.addTextChangedListener(object: TextWatcher {
  34. override fun beforeTextChanged(charSequence: CharSequence, i: Int, i1: Int, i2: Int) {}
  35. override fun onTextChanged(charSequence: CharSequence, i: Int, i1: Int, i2: Int) {}
  36. override fun afterTextChanged(editable: Editable) {
  37. //after the change calling the method and passing the search input
  38. filter(editable.toString())
  39. }
  40. })
  41. }
  42. private fun getDat1a() {
  43. val call: Call < List < recyclerresponse >> = ApiClient.getClient.getPhotos()
  44. call.enqueue(object: Callback < List < recyclerresponse >> {
  45. override fun onResponse(call: Call < List < recyclerresponse >> ? , response : Response < List < recyclerresponse >> ? ) {
  46. progerssProgressDialog.dismiss()
  47. dataList.addAll(response!!.body() !!)
  48. recyclerView.adapter!!.notifyDataSetChanged()
  49. }
  50. override fun onFailure(call: Call < List < recyclerresponse >> ? , t : Throwable ? ) {
  51. progerssProgressDialog.dismiss()
  52. }
  53. })
  54. }
  55. private fun filter(text: String) {
  56. //new array list that will hold the filtered data
  57. val filteredNames = ArrayList < recyclerresponse > ()
  58. //looping through existing elements and adding the element to filtered list
  59. dataList!!.filterTo(filteredNames) {
  60. //if the existing elements contains the search input
  61. it.title.toLowerCase().contains(text.toLowerCase()) || it.url.toLowerCase().contains(text.toLowerCase())
  62. }
  63. //calling a method of the adapter class and passing the filtered list
  64. if (filteredNames != null) {
  65. myAdapter!!.filterList(filteredNames)
  66. }
  67. }
  68. }
Step 7
Create a new adapter to show the API call to the Frontend.
How To Load The Data To Recyclerview And Search The Data In Kotlin Android
The Code is given below,
  1. package com.example.recyclerviewjson
  2. import android.content.Context
  3. import android.util.Log
  4. import android.view.LayoutInflater
  5. import android.view.View
  6. import android.view.ViewGroup
  7. import android.widget.TextView
  8. import androidx.recyclerview.widget.RecyclerView
  9. class DataAdpter(private
  10. var dataList: List < recyclerresponse > , private val context: Context): RecyclerView.Adapter < DataAdpter.ViewHolder > () {
  11. override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
  12. return ViewHolder(LayoutInflater.from(context).inflate(R.layout.listcard, parent, false))
  13. }
  14. override fun getItemCount(): Int {
  15. return dataList.size
  16. }
  17. override fun onBindViewHolder(holder: ViewHolder, position: Int) {
  18. val dataModel = dataList.get(position)
  19. holder.titleTextView.text = dataModel.title
  20. holder.title.text = dataModel.url
  21. }
  22. class ViewHolder(itemLayoutView: View): RecyclerView.ViewHolder(itemLayoutView) {
  23. lateinit
  24. var titleTextView: TextView
  25. lateinit
  26. var title: TextView
  27. init {
  28. titleTextView = itemLayoutView.findViewById(R.id.name)
  29. title = itemLayoutView.findViewById(R.id.url)
  30. }
  31. }
  32. fun filterList(filteredNames: ArrayList < recyclerresponse > ) {
  33. Log.e("list", filteredNames.toString())
  34. Log.e("list", filteredNames.size.toString())
  35. // this.dataList.clear()
  36. this.dataList = filteredNames
  37. notifyDataSetChanged()
  38. }
  39. }
Step 8
Click the "Run" button, or press Shift+F10 to finally run the project. Choose the "virtual machine" option and click OK.

Conclusion

How To Load The Data To Recyclerview And Search The Data In Kotlin Android
How To Load The Data To Recyclerview And Search The Data In Kotlin Android