RecyclerView
ন্যূনতম গ্রাফিকাল সংস্থান ব্যবহার করে প্রচুর পরিমাণে ডেটা প্রদর্শন করতে পারে। ব্যবহারকারীরা RecyclerView
-তে আইটেমগুলির মাধ্যমে স্ক্রোল করার সময়, স্ক্রীন থেকে স্ক্রোল করা আইটেমগুলির দৃষ্টান্তগুলি View
যখন তারা স্ক্রিনে স্ক্রোল করে তখন নতুন আইটেম তৈরি করতে পুনরায় ব্যবহার করা হয়। কিন্তু কনফিগারেশন পরিবর্তন, যেমন ডিভাইস ঘূর্ণন, একটি RecyclerView
এর অবস্থা পুনরায় সেট করতে পারে, যা ব্যবহারকারীদের আবার আইটেমগুলির তালিকায় তাদের পূর্ববর্তী অবস্থানে স্ক্রোল করতে বাধ্য করে।
RecyclerView
এর অবস্থা বজায় রাখা উচিত - বিশেষ করে, স্ক্রোল অবস্থান - এবং সমস্ত কনফিগারেশন পরিবর্তনের সময় এর তালিকা উপাদানগুলির অবস্থা।
রাষ্ট্র বজায় রাখুন
RecyclerView
স্ক্রোল অবস্থান সংরক্ষণ করতে RecyclerView.Adapter
এর রাষ্ট্র পুনরুদ্ধার নীতি সেট করুন। RecyclerView
তালিকা আইটেমগুলির অবস্থা সংরক্ষণ করুন। RecyclerView
অ্যাডাপ্টারে তালিকার আইটেমগুলির অবস্থা যোগ করুন এবং তালিকা আইটেমগুলির অবস্থা পুনরুদ্ধার করুন যখন তারা একটি ViewHolder
এর সাথে আবদ্ধ হয়।
1. Adapter
রাজ্য পুনরুদ্ধার নীতি সক্ষম করুন৷
RecyclerView
অ্যাডাপ্টারের রাষ্ট্র পুনরুদ্ধার নীতি সক্ষম করুন যাতে কনফিগারেশন পরিবর্তনগুলির মধ্যে RecyclerView
এর স্ক্রলিং অবস্থান বজায় থাকে। অ্যাডাপ্টার কনস্ট্রাক্টরে নীতি স্পেসিফিকেশন যোগ করুন:
কোটলিন
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); } ... }
2. রাষ্ট্রীয় তালিকা আইটেমগুলির অবস্থা সংরক্ষণ করুন৷
জটিল 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
ব্যবহার করুন.
3. Adapter
তালিকা আইটেমের অবস্থা যোগ করুন
আপনার RecyclerView.Adapter
এ তালিকা আইটেমগুলির অবস্থা যোগ করুন। যখন আপনার হোস্ট Activity
বা Fragment
তৈরি করা হয় তখন অ্যাডাপ্টার কনস্ট্রাক্টরের কাছে আইটেমের অবস্থা পাস করুন:
কোটলিন
val adapter = MyAdapter(items, viewModel.retrieveState())
জাভা
MyAdapter adapter = new MyAdapter(items, viewModel.retrieveState());
4. অ্যাডাপ্টারের 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
: একটি কার্যকলাপ বা খণ্ডের জন্য অবস্থা ধরে রাখে।
ফলাফল
আপনার RecyclerView
এখন তার স্ক্রোল অবস্থান এবং RecyclerView
তালিকার প্রতিটি আইটেমের অবস্থা পুনরুদ্ধার করতে সক্ষম।
এই নির্দেশিকা ধারণকারী সংগ্রহ
এই নির্দেশিকাটি এই কিউরেট করা কুইক গাইড সংগ্রহের অংশ যা বৃহত্তর অ্যান্ড্রয়েড উন্নয়ন লক্ষ্যগুলি কভার করে:
![](https://developer.android.com/static/images/quick-guides/collection-illustration.png?hl=bn)