কম্পিউটার টিউটোরিয়াল

কোটলিন ব্যবহার করে অ্যান্ড্রয়েডে ScrollView-এর মধ্যে ListView কীভাবে রাখবেন?

এই উদাহরণটি প্রদর্শন করে কীভাবে অ্যান্ড্রয়েডে কোটলিন ব্যবহার করে ScrollView-এর মধ্যে ListView রাখা যায় বিনা সেটি কল্যাপস হওয়া।

গুরুত্বপূর্ণ সতর্কতা: ScrollView-এর মধ্যে ListView রাখা অ্যান্টি-প্যাটার্ন। এর পরিবর্তে RecyclerView বা NestedScrollView ব্যবহার করুন। এই টিউটোরিয়াল শুধুমাত্র লিগ্যাসি কোড বোঝার জন্য।

পদক্ষেপ ১: নতুন প্রজেক্ট তৈরি করুন

Android Studio-তে যান File → New Project এবং প্রজেক্ট তৈরি করার জন্য প্রয়োজনীয় সব বিবরণ পূরণ করুন।

পদক্ষেপ ২: res/layout/activity_main.xml-এ কোড যোগ করুন

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView xmlns:android="https://schemas.android.com/apk/res/android" 
    xmlns:tools="https://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:padding="4dp" 
    tools:context=".MainActivity"> 
    <LinearLayout 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:orientation="vertical"> 
        <ListView 
            android:id="@+id/listView" 
            android:layout_width="match_parent" 
            android:layout_height="wrap_content" /> 
    </LinearLayout> 
</ScrollView>

পদক্ষেপ ৩: src/MainActivity.kt-এ কোড যোগ করুন

import android.os.Bundle
import android.widget.ArrayAdapter
import android.widget.ListView
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {
    private val listViewArray = arrayOf(
        "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX", 
        "SEVEN", "EIGHT", "NINE", "TEN", "ELEVEN", 
        "TWELVE", "THIRTEEN", "FOURTEEN", "FIFTEEN", "SIXTEEN"
    )
    private lateinit var list: ListView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        title = "KotlinApp"

        list = findViewById(R.id.listView)
        list.adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, listViewArray)
        ListHelper.getListViewSize(list)
    }
}

পদক্ষেপ ৪: ListHelper.kt হেল্পার ক্লাস তৈরি করুন

import android.util.Log
import android.widget.ListAdapter
import android.widget.ListView

object ListHelper {
    fun getListViewSize(myListView: ListView) {
        val myListAdapter: ListAdapter = myListView.adapter ?: return
        
        var totalHeight = 0
        for (i in 0 until myListAdapter.count) {
            val listItem = myListAdapter.getView(i, null, myListView)
            listItem.measure(0, 0)
            totalHeight += listItem.measuredHeight
        }
        
        val params = myListView.layoutParams
        params.height = totalHeight + myListView.dividerHeight * (myListAdapter.count - 1)
        myListView.layoutParams = params
        
        Log.i("height of listItem", totalHeight.toString())
    }
}

পদক্ষেপ ৫: 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>

সুপারিশ করা আধুনিক সমাধান

<!-- NestedScrollView + RecyclerView ব্যবহার করুন -->
<androidx.core.widget.NestedScrollView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent">
    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:nestedScrollingEnabled="false" />
</androidx.core.widget.NestedScrollView>

অ্যাপ্লিকেশন চালান

আপনার আসল অ্যান্ড্রয়েড ডিভাইস কম্পিউটারের সাথে সংযুক্ত আছে বলে ধরে। Android Studio-তে আপনার প্রজেক্টের এক্টিভিটি ফাইল খুলুন এবং টুলবারের রান আইকনে ক্লিক করুন। আপনার মোবাইল ডিভাইস সিলেক্ট করুন এবং ডিভাইসে ডিফল্ট স্ক্রিন দেখুন।

  1. অ্যান্ড্রয়েডে ListView ডাইনামিকভাবে আপডেট করার পদ্ধতি

  2. অ্যান্ড্রয়েড ListView-এ ফুটার যোগ করার পদ্ধতি

  3. অ্যান্ড্রয়েডে ScrollView-এ ListView কোল্যাপ্স না করে রাখা

  4. Android-এ ScrollView-এর শেষে পৌঁছানোর ইভেন্ট ধরার পদ্ধতি