RecyclerView অবস্থা পরিচালনা করুন

RecyclerView ন্যূনতম গ্রাফিক্যাল রিসোর্স ব্যবহার করে প্রচুর পরিমাণে ডেটা প্রদর্শন করতে পারে। ব্যবহারকারীরা যখন একটি RecyclerView এর আইটেমগুলো স্ক্রল করেন, তখন স্ক্রিনের বাইরে চলে যাওয়া আইটেমগুলোর View ইনস্ট্যান্সগুলো স্ক্রিনে স্ক্রল করে আসা নতুন আইটেম তৈরি করার জন্য পুনরায় ব্যবহৃত হয়। কিন্তু ডিভাইসের ঘূর্ণনের মতো কনফিগারেশন পরিবর্তন একটি RecyclerView এর অবস্থা রিসেট করে দিতে পারে, যার ফলে ব্যবহারকারীদের আইটেমের তালিকায় তাদের পূর্ববর্তী অবস্থানে পুনরায় স্ক্রল করতে হয়।

সমস্ত কনফিগারেশন পরিবর্তনের সময় RecyclerView উচিত তার অবস্থা—বিশেষ করে, স্ক্রোল অবস্থান—এবং তার তালিকার উপাদানগুলোর অবস্থা বজায় রাখা।

ফলাফল

আপনার RecyclerView তার স্ক্রোল অবস্থান এবং RecyclerView প্রতিটি আইটেমের অবস্থা পুনরুদ্ধার করতে সক্ষম।

সংস্করণ সামঞ্জস্যতা

এই বাস্তবায়নটি সকল এপিআই স্তরের সাথে সামঞ্জস্যপূর্ণ।

নির্ভরশীলতা

কিছুই না।

অবস্থা বজায় রাখুন

RecyclerView এর স্ক্রোল পজিশন সংরক্ষণ করার জন্য RecyclerView.Adapter এর স্টেট পুনরুদ্ধার নীতি সেট করুন। RecyclerView লিস্ট আইটেমগুলোর স্টেট সংরক্ষণ করুন। লিস্ট আইটেমগুলোর স্টেট RecyclerView অ্যাডাপ্টারে যোগ করুন, এবং যখন সেগুলো একটি ViewHolder সাথে বাইন্ড করা হয় তখন লিস্ট আইটেমগুলোর স্টেট পুনরুদ্ধার করুন।

১. Adapter অবস্থা পুনরুদ্ধার নীতি সক্রিয় করুন

Enable the state restoration policy of the RecyclerView adapter so that the scrolling position of the RecyclerView is maintained across configuration changes. Add the policy specification to the adapter constructor:

কোটলিন

class MyAdapter() : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
    init {
        stateRestorationPolicy = StateRestorationPolicy.PREVENT_WHEN_EMPTY
    }
    ...
}

জাভা

class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

    public Adapter() {
        setStateRestorationPolicy(StateRestorationPolicy.PREVENT_WHEN_EMPTY);
    }
    ...
}

২. স্টেটফুল লিস্ট আইটেমগুলোর অবস্থা সংরক্ষণ করুন

RecyclerView এর জটিল লিস্ট আইটেমগুলোর অবস্থা সংরক্ষণ করুন, যেমন যে আইটেমগুলোতে EditText এলিমেন্ট থাকে। উদাহরণস্বরূপ, একটি EditText এর অবস্থা সংরক্ষণ করতে, টেক্সটের পরিবর্তনগুলো ক্যাপচার করার জন্য onClick হ্যান্ডলারের মতো একটি কলব্যাক যোগ করুন। কলব্যাকের মধ্যে, কোন ডেটা সংরক্ষণ করতে হবে তা নির্ধারণ করুন:

কোটলিন

input.addTextChangedListener(
    afterTextChanged = { text ->
        text?.let {
            // Save state here.
        }
    }
)

জাভা

input.addTextChangedListener(new TextWatcher() {

    ...

    @Override
    public void afterTextChanged(Editable s) {
        // Save state here.
    }
});

আপনার Activity বা Fragment এ কলব্যাকটি ডিক্লেয়ার করুন। স্টেট সংরক্ষণের জন্য একটি ViewModel ব্যবহার করুন।

৩. Adapter তালিকা আইটেমের অবস্থা যোগ করুন

আপনার RecyclerView.Adapter এ লিস্ট আইটেমগুলোর স্টেট যোগ করুন। আপনার হোস্ট Activity বা Fragment তৈরি করার সময় অ্যাডাপ্টার কনস্ট্রাক্টরে আইটেমের স্টেটটি পাস করুন:

কোটলিন

val adapter = MyAdapter(items, viewModel.retrieveState())

জাভা

MyAdapter adapter = new MyAdapter(items, viewModel.retrieveState());

৪. অ্যাডাপ্টারের ViewHolder তালিকা আইটেমের অবস্থা পুনরুদ্ধার করুন

RecyclerView.Adapter এ, যখন আপনি একটি ViewHolder কোনো আইটেমের সাথে বাইন্ড করেন, তখন আইটেমটির স্টেট পুনরুদ্ধার করুন:

কোটলিন

override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
    ...
    val item = items[position]
    val state = states.firstOrNull { it.item == item }

    if (state != null) {
        holder.restore(state)
    }
}

জাভা

@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
    ...
    Item item = items[position];
    Arrays.stream(states).filter(state -> state.item == item)
        .findFirst()
        .ifPresent(state -> holder.restore(state));
}

মূল বিষয়গুলো

  • RecyclerView.Adapter#setStateRestorationPolicy() : কনফিগারেশন পরিবর্তনের পর একটি RecyclerView.Adapter কীভাবে তার অবস্থা পুনরুদ্ধার করে তা নির্দিষ্ট করে।
  • ViewModel : কোনো অ্যাক্টিভিটি বা ফ্র্যাগমেন্টের অবস্থা ধারণ করে।

যে সংগ্রহগুলিতে এই নির্দেশিকাটি রয়েছে

এই নির্দেশিকাটি বিশেষভাবে নির্বাচিত কুইক গাইড সংকলনগুলোর একটি অংশ, যা অ্যান্ড্রয়েড ডেভেলপমেন্টের বৃহত্তর লক্ষ্যগুলো পূরণ করে:

ট্যাবলেট, ফোল্ডেবল এবং ক্রোমওএস ডিভাইসে উন্নত ব্যবহারকারী অভিজ্ঞতা প্রদানের জন্য আপনার অ্যাপটি সক্ষম করুন।

কোনো প্রশ্ন বা মতামত থাকলে

আমাদের প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী পেজে গিয়ে সংক্ষিপ্ত নির্দেশিকাগুলো সম্পর্কে জানুন অথবা আমাদের সাথে যোগাযোগ করে আপনার মতামত জানান।