Jetpack Compose এ LazyRow — এটি কী, বৈশিষ্ট্য এবং কিভাবে কাজ করে

লেখক: IT Sectr প্রকাশিত: 2026-06-29 পড়ার সময়: 10 মিনিট

LazyRow — Jetpack Compose এ উপাদানগুলির অলস লোডিং সহ অনুভূমিক তালিকা তৈরি করার জন্য একটি কম্পোজেবল ফাংশন। Row এর বিপরীতে, LazyRow শুধুমাত্র দৃশ্যমান উপাদান তৈরি করে এবং অনুভূমিক স্ক্রোলিংয়ের সময় সেগুলি পুনরায় ব্যবহার করে। Google Android Documentation, 2025 অনুসারে, LazyRow হল LazyColumn এর অনুভূমিক প্রতিরূপ এবং মোবাইল অ্যাপ্লিকেশনে ক্যারাউসেল, গ্যালারি এবং অনুভূমিক মেনুর জন্য কার্যকর।

মূল পয়েন্ট

  • LazyRow — অলস লোডিং সহ Jetpack Compose এর অনুভূমিক তালিকা, অনুভূমিক স্ক্রোলিংয়ের সময় শুধুমাত্র দৃশ্যমান উপাদান তৈরি করে।
  • horizontalArrangement উপাদানগুলির অনুভূমিক বিন্যাস পরিচালনা করে, যখন contentPadding কন্টেইনারের কিনারায় প্যাডিং যোগ করে।
  • LazyListState অনুভূমিক স্ক্রোল অবস্থান ট্র্যাক করে এবং animateScrollToItem এর মাধ্যমে প্রোগ্রামেটিক নিয়ন্ত্রণ প্রদান করে।
  • LazyRow মোবাইল ইন্টারফেসে ইমেজ ক্যারাউসেল, ক্যাটাগরি তালিকা, অনুভূমিক গ্যালারি এবং ট্যাবের জন্য কার্যকর।
  • contentType এবং key LazyRow এ উপাদান পুনঃব্যবহার অপ্টিমাইজ করে, স্ক্রোলিংয়ের সময় পুনর্গঠন হ্রাস করে।

Jetpack Compose এ LazyRow কী

LazyRow — একটি কম্পোজেবল ফাংশন যা উপাদানগুলির অলস লোডিং সহ একটি অনুভূমিক স্ক্রোলযোগ্য তালিকা প্রয়োগ করে। Row এর বিপরীতে, যা একসাথে সমস্ত চাইল্ড উপাদান রেন্ডার করে, LazyRow শুধুমাত্র দৃশ্যমান এলাকায় দৃশ্যমান উপাদান তৈরি করে।

LazyRow LazyColumn এর মতো একই নীতিতে কাজ করে, কিন্তু উপাদানগুলিকে অনুভূমিকভাবে সাজায়। বাম বা ডানে স্ক্রোল করার সময়, দৃশ্যমান এলাকা থেকে বেরিয়ে যাওয়া উপাদানগুলি নতুন উপাদান প্রদর্শনের জন্য পুনরায় ব্যবহার করা হয়। এটি অনেক ছবি সহ গ্যালারি বা দীর্ঘ ক্যাটাগরি তালিকার জন্য অত্যন্ত গুরুত্বপূর্ণ।

Android Developers Blog, 2024 অনুসারে, LazyRow LazyColumn এর মতো একই LazyList আর্কিটেকচার ব্যবহার করে, যার মধ্যে LazyListState, Pool এর মাধ্যমে পুনঃব্যবহার প্রক্রিয়া এবং বিভিন্ন উপাদান প্রকারের জন্য সমর্থন অন্তর্ভুক্ত। উপাদানগুলির নির্দিষ্ট উচ্চতার সাথে সর্বোচ্চ দক্ষতা অর্জন করা হয়।

LazyRow এর মৌলিক সিগনেচার

LazyRow প্যারামিটার modifier, state, contentPadding, reverseLayout, horizontalArrangement এবং verticalAlignment গ্রহণ করে। বিষয়বস্তু DSL ফাংশন items এবং item এর মাধ্যমে সংজ্ঞায়িত করা হয়, LazyColumn এর মতো।

kotlin
@Composable
fun SimpleLazyRow() {
    val items = (1..50).toList()
    LazyRow(
        modifier = Modifier.fillMaxWidth().height(100.dp),
        horizontalArrangement = Arrangement.spacedBy(8.dp),
        contentPadding = PaddingValues(start = 16.dp, end = 16.dp)
    ) {
        items(items) { item ->
            Box(
                modifier = Modifier.size(80.dp).background(Color.Gray)
            ) {
                Text(text = "$item", modifier = Modifier.align(Alignment.Center))
            }
        }
    }
}

LazyRow এর বৈশিষ্ট্য: horizontalArrangement এবং contentPadding

horizontalArrangement LazyRow এর ভিতরে অনুভূমিক অক্ষ বরাবর উপাদানগুলির বিতরণ পরিচালনা করে। Row এর মতো একই Arrangement মান উপলব্ধ: Start, Center, End, SpaceBetween, SpaceEvenly, SpaceAround এবং কাস্টম স্পেসিং সহ spacedBy।

contentPadding LazyRow কন্টেইনারের কিনারায় প্যাডিং যোগ করে। Modifier.padding এর বিপরীতে, contentPadding স্ক্রোলিংয়ের সময় বিবেচনা করা হয়: প্রথম উপাদানের বাম কিনারা থেকে প্যাডিং থাকবে, শেষের ডান কিনারা থেকে। Material Design Guidelines, 2025 অনুসারে, ক্যারাউসেল এবং গ্যালারির জন্য contentPadding বাধ্যতামূলক যাতে প্রথম এবং শেষ উপাদান স্ক্রিনের কিনারায় লেগে না থাকে।

verticalAlignment LazyRow এর ভিতরে উপাদানগুলিকে উল্লম্বভাবে সারিবদ্ধ করে। ডিফল্টরূপে Alignment.Top ব্যবহার করা হয়। বিভিন্ন উচ্চতার উপাদানগুলিকে কেন্দ্রীভূত করতে Alignment.CenterVertically ব্যবহার করুন, যা বিভিন্ন অনুপাতের ছবি সহ ক্যারাউসেলের জন্য দরকারী।

LazyRow প্যারামিটার টেবিল

প্যারামিটারবিবরণডিফল্ট মান
horizontalArrangementউপাদানগুলির অনুভূমিক বিতরণArrangement.Start
contentPaddingকন্টেইনারের কিনারায় প্যাডিংPaddingValues(0.dp)
verticalAlignmentউল্লম্ব সারিবদ্ধকরণAlignment.Top
reverseLayoutউপাদানের বিপরীত ক্রমfalse
userScrollEnabledব্যবহারকারী স্ক্রোলিং সক্ষম করুনtrue

LazyListState এর সাথে অনুভূমিক স্ক্রোল পরিচালনা

LazyListState LazyRow এর জন্য LazyColumn এর মতোই কাজ করে: এটি প্রথম দৃশ্যমান উপাদান, অফসেট এবং সামগ্রিক স্ক্রোল অবস্থান ট্র্যাক করে। অবস্থাটি rememberLazyListState() এর মাধ্যমে তৈরি করা হয় এবং state প্যারামিটারে পাস করা হয়।

LazyRow এর প্রোগ্রামেটিক স্ক্রোল নিয়ন্ত্রণ একই পদ্ধতিতে করা হয়: মসৃণ অ্যানিমেশনের জন্য animateScrollToItem এবং তাৎক্ষণিক স্ক্রোলিংয়ের জন্য scrollToItem। উভয়ই একটি করুটিনের ভিতরে কল করা হয়। এটি বাম/ডান বোতাম সহ ক্যারাউসেল বা স্বয়ংক্রিয় স্ক্রোলিংয়ের জন্য দরকারী।

Android Developers, 2024 অনুসারে, LazyRow SnapFlingBehavior সমর্থন করে — দ্রুত স্ক্রোলিংয়ের জন্য আচরণ যা উপাদানগুলির মধ্যে না গিয়ে নিকটতম উপাদানে থামে। এটি ক্যারাউসেল এবং গ্যালারির জন্য একটি স্ন্যাপ প্রভাব তৈরি করে।

kotlin
@Composable
fun CarouselWithSnap() {
    val listState = rememberLazyListState()
    val scope = rememberCoroutineScope()
    val items = listOf("A", "B", "C", "D", "E")

    Column {
        LazyRow(
            state = listState,
            flingBehavior = SnapFlingBehavior(listState),
            horizontalArrangement = Arrangement.spacedBy(8.dp)
        ) {
            items(items) { item ->
                Card(modifier = Modifier.width(150.dp)) {
                    Text(text = item, modifier = Modifier.padding(16.dp))
                }
            }
        }

        Row(modifier = Modifier.fillMaxWidth()) {
            Button(onClick = {
                scope.launch {
                    listState.animateScrollToItem(0)
                }
            }) { Text("শুরু করতে") }
        }
    }
}

ইন্টারফেসে LazyRow ব্যবহারের উদাহরণ

প্রথম উদাহরণ — প্রিভিউ সহ ইমেজ গ্যালারির জন্য LazyRow। প্রতিটি উপাদান একটি Box যার মধ্যে একটি ছবি এবং ক্যাপশন রয়েছে। LazyRow কয়েক ডজন এবং শত শত ছবি দক্ষতার সাথে পরিচালনা করে, শুধুমাত্র দৃশ্যমান ছবি লোড করে।

kotlin
@Composable
fun ImageGallery(images: List<String>) {
    LazyRow(
        contentPadding = PaddingValues(start = 16.dp, end = 16.dp),
        horizontalArrangement = Arrangement.spacedBy(12.dp)
    ) {
        items(images, key = { it }) { url ->
            AsyncImage(
                model = url,
                contentDescription = "Image",
                modifier = Modifier.size(120.dp)
            )
        }
    }
}

দ্বিতীয় উদাহরণ — আইকন সহ ক্যাটাগরি তালিকার জন্য LazyRow। ক্যাটাগরিগুলি চিপ হিসাবে প্রদর্শিত হয় এবং ব্যবহারকারী সেগুলি অনুভূমিকভাবে স্ক্রোল করতে পারে। spacedBy এবং contentPadding সহ LazyRow ক্যাটাগরির মধ্যে এবং কিনারায় স্পেসিং তৈরি করে।

kotlin
@Composable
fun CategoryChips(categories: List<String>) {
    LazyRow(
        contentPadding = PaddingValues(horizontal = 16.dp),
        horizontalArrangement = Arrangement.spacedBy(8.dp)
    ) {
        items(categories, key = { it }) { category ->
            AssistChip(
                onClick = {},
                label = { Text(category) }
            )
        }
    }
}

LazyRow বনাম Row: কখন কী বেছে নেবেন

LazyRow এবং Row এর মধ্যে পছন্দ উপাদানের সংখ্যার উপর নির্ভর করে। Row 5–10টি উপাদানের জন্য উপযুক্ত যা সর্বদা স্ক্রিনে দৃশ্যমান। LazyRow প্রয়োজনীয় যখন অনেক উপাদান থাকে বা তাদের সংখ্যা গতিশীল হয়।

Row একসাথে সমস্ত উপাদান রেন্ডার করে, যা বিপুল সংখ্যক উপাদানের সাথে বিলম্ব ঘটায়। LazyRow শুধুমাত্র দৃশ্যমান উপাদান রেন্ডার করে, যা এটিকে স্ক্রোলযোগ্য তালিকার জন্য পছন্দনীয় করে তোলে। Android Developers Blog, 2024 অনুসারে, স্থানান্তর সীমা প্রায় 10টি উপাদান: যদি আরও উপাদান থাকে, LazyRow ব্যবহার করুন।

LazyRow অ্যানিমেশন, SnapFlingBehavior এবং বিভাজকের মাধ্যমে গ্রুপিং সমর্থন করে, যা এটিকে জটিল ইন্টারফেসের জন্য আরও নমনীয় করে তোলে। Row সহজ এবং LazyListState এর প্রয়োজন নেই, কিন্তু দীর্ঘ তালিকার জন্য অপ্টিমাইজ করা নয়।

  • Row — স্ক্রোল ছাড়া 5–10টি স্থির উপাদানের জন্য
  • LazyRow — অনুভূমিক স্ক্রোলিং সহ 10+ উপাদানের জন্য
  • LazyRow — ক্যারাউসেল, গ্যালারি, গতিশীল তালিকার জন্য

সচরাচর জিজ্ঞাসিত প্রশ্ন

LazyRow এবং LazyColumn এর মধ্যে পার্থক্য কী?

LazyRow অনুভূমিকভাবে স্ক্রোল করে এবং উপাদানগুলিকে বাম থেকে ডানে সাজায়, যখন LazyColumn উল্লম্বভাবে উপরে থেকে নীচে স্ক্রোল করে। উভয়ই একই অলস লোডিং নীতি, LazyListState এবং DSL items ফাংশন ব্যবহার করে।

LazyRow এ SnapFlingBehavior কীভাবে যুক্ত করবেন?

LazyRow এর flingBehavior প্যারামিটারে SnapFlingBehavior(listState) পাস করুন। SnapFlingBehavior LazyRow কে উপাদানের মধ্যে না গিয়ে নিকটতম উপাদানে থামতে বাধ্য করে, যা ক্যারাউসেলের জন্য স্ন্যাপ প্রভাব তৈরি করে।

কিভাবে অসীম স্ক্রোলিং সহ LazyRow তৈরি করবেন?

LazyListState.layoutInfo এর মাধ্যমে শেষ দৃশ্যমান উপাদান ট্র্যাক করুন এবং যখন শেষ উপাদান তালিকার শেষের কাছে পৌঁছায় তখন নতুন ডেটা লোড করুন। চক্রীয় স্ক্রোলিংয়ের জন্য উপাদানগুলির ডুপ্লিকেশন সহ কাস্টম বাস্তবায়ন ব্যবহার করুন।

LazyRow কি LazyColumn এর ভিতরে ব্যবহার করা যেতে পারে?

হ্যাঁ, LazyRow LazyColumn এর ভিতরে নেস্ট করা যেতে পারে। এটি উল্লম্ব তালিকার ভিতরে অনুভূমিক ক্যারাউসেল সহ জটিল পৃষ্ঠা তৈরি করার একটি মানক প্যাটার্ন। সঠিক ক্রিয়াকলাপের জন্য প্রতিটি LazyRow এর একটি নির্দিষ্ট উচ্চতা থাকতে হবে।

কিভাবে বুঝবেন যে LazyRow শেষ পর্যন্ত স্ক্রোল হয়েছে?

LazyListState.layoutInfo.visibleItemsInfo ব্যবহার করুন এবং শেষ দৃশ্যমান উপাদানের সূচকের তুলনা মোট সংখ্যা থেকে এক বিয়োগ করে করুন। যখন এই মানগুলি মেলে, LazyRow তালিকার শেষে রয়েছে।

সারসংক্ষেপ

  • LazyRow — অলস লোডিং সহ অনুভূমিক তালিকা, বড় ডেটা দক্ষ পরিচালনার জন্য স্ক্রোলিংয়ের সময় শুধুমাত্র দৃশ্যমান উপাদান তৈরি এবং পুনরায় ব্যবহার করে।
  • horizontalArrangement উপাদানগুলির অনুভূমিক বিতরণ পরিচালনা করে, যখন contentPadding Material Design এ সঠিক প্রদর্শনের জন্য কিনারায় প্যাডিং যোগ করে।
  • LazyListState animateScrollToItem এর মাধ্যমে প্রোগ্রামেটিক স্ক্রোল নিয়ন্ত্রণ প্রদান করে এবং উপাদানগুলিতে স্ন্যাপ করার জন্য SnapFlingBehavior সমর্থন করে।
  • LazyRow মোবাইল ইন্টারফেসে ইমেজ ক্যারাউসেল, গ্যালারি, ক্যাটাগরি তালিকা, ট্যাব এবং অনুভূমিক মেনুর জন্য কার্যকর।
  • contentType এবং key প্রধান অপ্টিমাইজেশন টুল যা পুনর্গঠন হ্রাস করে এবং LazyRow এ উপাদান পুনঃব্যবহার উন্নত করে।
  • Row 5–10টি স্থির উপাদানের জন্য উপযুক্ত, LazyRow — স্ক্রোলিং সহ গতিশীল বা দীর্ঘ অনুভূমিক তালিকার জন্য।
  • LazyRow উল্লম্ব তালিকার ভিতরে অনুভূমিক ক্যারাউসেল সহ জটিল লেআউট তৈরি করতে LazyColumn এ নেস্ট করা যেতে পারে।

আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব

IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।

প্রকল্প নিয়ে আলোচনা করুন

আরও পড়ুন