কম্পিউটার

কোটলিন ব্যবহার করে অ্যান্ড্রয়েডে রিসাইক্লারভিউ সহ একটি অন্তহীন তালিকা কীভাবে বাস্তবায়ন করবেন?


কোটলিন ব্যবহার করে অ্যান্ড্রয়েডে রিসাইক্লারভিউ-এর সাথে একটি অন্তহীন তালিকা কীভাবে বাস্তবায়ন করা যায় তা এই উদাহরণটি দেখায়৷

ধাপ 1 − অ্যান্ড্রয়েড স্টুডিওতে একটি নতুন প্রকল্প তৈরি করুন, ফাইল ⇒ নতুন প্রকল্পে যান এবং একটি নতুন প্রকল্প তৈরি করতে সমস্ত প্রয়োজনীয় বিবরণ পূরণ করুন৷

ধাপ 2 − res/layout/activity_main.xml-এ নিম্নলিখিত কোড যোগ করুন।

<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="https://schemas.android.com/apk/res/android"
   xmlns:app="https://schemas.android.com/apk/res-auto"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   app:cardElevation="2dp"
   app:cardUseCompatPadding="true">
   <TextView
      android:id="@+id/textViewItem"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:padding="16dp"
      android:textColor="@android:color/holo_blue_bright"
      android:textStyle="bold" />
</androidx.cardview.widget.CardView>

ধাপ 3 − নিম্নলিখিত কোডটি src/MainActivity.kt

এ যোগ করুন
import android.os.Bundle
import android.os.Handler
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
class MainActivity : AppCompatActivity() {
   lateinit var recyclerView: RecyclerView
   lateinit var recyclerViewAdapter: RecyclerViewAdapter
   var rowsArrayList: ArrayList<String> = ArrayList()
   var isLoading = false
   override fun onCreate(savedInstanceState: Bundle?) {
      super.onCreate(savedInstanceState)
      setContentView(R.layout.activity_main)
      title = "KotlinApp"
      recyclerView = findViewById(R.id.recyclerView)
      populateData()
      initAdapter()
      initScrollListener()
   }
   private fun initScrollListener() {
      recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {
         override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
            super.onScrolled(recyclerView, dx, dy)
            val linearLayoutManager = recyclerView.layoutManager as LinearLayoutManager?
            if (!isLoading) {
               if (linearLayoutManager != null && linearLayoutManager.findLastCompletelyVisibleItemPosition() ==
               rowsArrayList.size − 1) {
                  //bottom of list!
                  loadMore()
                  isLoading = true
               }
            }
         }
      })
   }
   private fun initAdapter() {
      recyclerViewAdapter = RecyclerViewAdapter(rowsArrayList)
      recyclerView.layoutManager = LinearLayoutManager(applicationContext)
      recyclerView.adapter = recyclerViewAdapter
   }
   private fun populateData() {
      for (i in 0..9) {
         rowsArrayList.add("Number $i")
      }
   }
   private fun loadMore() {
      rowsArrayList.add(null.toString())
      recyclerViewAdapter.notifyItemInserted(rowsArrayList.size − 1)
      val handler = Handler()
      handler.postDelayed(Runnable {
         rowsArrayList.removeAt(rowsArrayList.size − 1)
         val scrollPosition = rowsArrayList.size
         recyclerViewAdapter.notifyItemRemoved(scrollPosition)
         var currentSize = scrollPosition
         val nextLimit = currentSize + 10
         while (currentSize − 1 < nextLimit) {
            rowsArrayList.add("Number $currentSize")
            currentSize++
         }
         recyclerViewAdapter.notifyDataSetChanged()
         isLoading = false
      }, 2000)
   }
}

পদক্ষেপ 4৷ - একটি নতুন ক্লাস RecyclerViewAdapter.kt তৈরি করুন এবং নিম্নলিখিত কোড যোগ করুন −

import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ProgressBar
import android.widget.TextView
import androidx.annotation.NonNull
import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView.ViewHolder
class RecyclerViewAdapter internal constructor(private val itemList: List<String>) :
RecyclerView.Adapter<ViewHolder>() {
   private val viewItemType = 0
   @NonNull
   override fun onCreateViewHolder(
   @NonNull parent: ViewGroup,
   viewType: Int
   ): ViewHolder {
      return if (viewType == viewItemType) {
         val view =
         LayoutInflater.from(parent.context).inflate(R.layout.item_row, parent, false)
         ItemViewHolder(view)
      } else {
         val view = LayoutInflater.from(parent.context)
         .inflate(R.layout.item_loading, parent, false)
         LoadingViewHolder(view)
      }
   }
   override fun onBindViewHolder(@NonNull viewHolder: ViewHolder, position: Int) {
      if (viewHolder is ItemViewHolder) {
         populateItemRows(viewHolder, position)
      } else if (viewHolder is LoadingViewHolder) {
         showLoadingView(viewHolder, position)
      }
   }
   override fun getItemViewType(position: Int): Int {
      return viewItemType
   }
   private inner class ItemViewHolder internal constructor(@NonNull itemView: View) :
   ViewHolder(itemView) {
      internal var tvItem: TextView = itemView.findViewById(R.id.textViewItem)
   }
   private class LoadingViewHolder internal constructor(itemView: View) :
   ViewHolder(itemView) {
      var progressBar: ProgressBar = itemView.findViewById(R.id.progressBar)
   }
   override fun getItemCount(): Int {
      return itemList.size
   }
   private fun showLoadingView(viewHolder: LoadingViewHolder, position: Int) {}
   private fun populateItemRows(viewHolder: ItemViewHolder, position: Int) {
      val item = itemList[position]
      viewHolder.tvItem.text = item
   }
}

ধাপ 5 − একটি লেআউট রিসোর্স ফাইল item_row.xml তৈরি করুন এবং নিম্নলিখিত যোগ করুন −

<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="https://schemas.android.com/apk/res/android"
   xmlns:app="https://schemas.android.com/apk/res-auto"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   app:cardElevation="2dp"
   app:cardUseCompatPadding="true">
   <TextView
      android:id="@+id/textViewItem"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:padding="16dp"
      android:textColor="@android:color/holo_blue_bright"
      android:textStyle="bold" />
</androidx.cardview.widget.CardView>

ধাপ 6 − একটি লেআউট রিসোর্স ফাইল item_loading.xml তৈরি করুন এবং নিম্নলিখিত যোগ করুন -

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical">
   <ProgressBar
      android:id="@+id/progressBar"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_gravity="center_horizontal"
      android:indeterminate="true"
      android:paddingLeft="8dp"
      android:paddingRight="8dp" />
</LinearLayout>

পদক্ষেপ 7 − androidManifest.xml

-এ নিম্নলিখিত কোড যোগ করুন
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android" package="com.example.q11">
   <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:roundIcon="@mipmap/ic_launcher_round"
      android:supportsRtl="true"
      android:theme="@style/AppTheme">
      <activity android:name=".MainActivity">
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
      </activity>
   </application>
</manifest>

আপনার অ্যাপ্লিকেশন চালানোর চেষ্টা করা যাক. আমি ধরে নিচ্ছি আপনি আপনার কম্পিউটারের সাথে আপনার আসল অ্যান্ড্রয়েড মোবাইল ডিভাইসটি সংযুক্ত করেছেন৷ অ্যান্ড্রয়েড স্টুডিও থেকে অ্যাপটি চালাতে, আপনার প্রোজেক্টের অ্যাক্টিভিটি ফাইলগুলির একটি খুলুন এবং রান আইকনে ক্লিক করুন টুলবার থেকে কোটলিন ব্যবহার করে অ্যান্ড্রয়েডে রিসাইক্লারভিউ সহ একটি অন্তহীন তালিকা কীভাবে বাস্তবায়ন করবেন? । একটি বিকল্প হিসাবে আপনার মোবাইল ডিভাইস নির্বাচন করুন এবং তারপরে আপনার মোবাইল ডিভাইসটি পরীক্ষা করুন যা আপনার ডিফল্ট স্ক্রীন প্রদর্শন করবে

কোটলিন ব্যবহার করে অ্যান্ড্রয়েডে রিসাইক্লারভিউ সহ একটি অন্তহীন তালিকা কীভাবে বাস্তবায়ন করবেন?

কোটলিন ব্যবহার করে অ্যান্ড্রয়েডে রিসাইক্লারভিউ সহ একটি অন্তহীন তালিকা কীভাবে বাস্তবায়ন করবেন?


  1. রিসাইক্লারভিউ দিয়ে কীভাবে একটি অনুভূমিক তালিকা ভিউ তৈরি করবেন?

  2. রিসাইক্লারভিউ সহ সীমাবদ্ধতা লেআউট কীভাবে ব্যবহার করবেন?

  3. অ্যান্ড্রয়েডে সার্চভিউ দিয়ে কীভাবে রিসাইক্লারভিউ ফিল্টার করবেন?

  4. অ্যান্ড্রয়েডে রিসাইক্লারভিউ সহ অন্তহীন তালিকা কীভাবে বাস্তবায়ন করবেন?