डाइनैमिक सूची को पसंद के मुताबिक बनाना Android Jetpack का हिस्सा है.

लिखने का तरीका आज़माएं
Android के लिए, Jetpack Compose हमारा सुझाया गया यूज़र इंटरफ़ेस (यूआई) टूलकिट है. Compose में लेआउट इस्तेमाल करने का तरीका जानें.

अपनी पसंद के मुताबिक RecyclerView अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है ऑब्जेक्ट सबमिट कर सकते हैं. इसमें बताई गई स्टैंडर्ड क्लास इसकी मदद से डाइनैमिक सूचियां बनाएं RecyclerView में वे सभी सुविधाएं मौजूद हैं जिनकी ज़्यादातर डेवलपर को ज़रूरत होती है. तय सीमा में कई मामलों में, आपको प्रत्येक व्यू होल्डर के लिए केवल दृश्य डिज़ाइन करना होगा और कोड का इस्तेमाल करें, ताकि उन व्यू को सही डेटा के साथ अपडेट किया जा सके. हालांकि, अगर आपके ऐप्लिकेशन में ज़रूरतों के हिसाब से बनाई गई है, तो आप कई तरीकों से मानक व्यवहार में बदलाव कर सकते हैं. इस दस्तावेज़ में, पसंद के मुताबिक किए जा सकने वाले कुछ विकल्पों के बारे में बताया गया है.

लेआउट में बदलाव करें

RecyclerView किसी व्यक्ति की जगह तय करने के लिए, लेआउट मैनेजर का इस्तेमाल करता है आइटम पर जाएं और यह तय करने के लिए कि ऐसे आइटम व्यू का फिर से इस्तेमाल कब किया जाए जो अब नहीं हैं उपयोगकर्ता को दिखता है. दोबारा इस्तेमाल या रीसाइकल करने के लिए—व्यू, लेआउट मैनेजर, अडैप्टर को व्यू के कॉन्टेंट को डेटासेट से अलग है. इस तरीके से व्यू को रीसाइकल करने से परफ़ॉर्मेंस बेहतर होती है और गै़र-ज़रूरी व्यू बनाने या परफ़ॉर्मेंस महंगा findViewById() अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है खोजें. Android Support Library में तीन स्टैंडर्ड लेआउट मैनेजर, जिसमें से कई कस्टमाइज़ेशन विकल्प उपलब्ध हैं:

  • LinearLayoutManager: आइटम को एक डाइमेंशन वाली सूची में व्यवस्थित करता है. इसका इस्तेमाल करके RecyclerView में LinearLayoutManager से ऑफ़र मिलते हैं फ़ंक्शन के साथ-साथ ListView लेआउट.
  • GridLayoutManager: आइटम को द्वि-आयामी ग्रिड में व्यवस्थित करता है, जैसे कि चेकरबोर्ड. RecyclerView का इस्तेमाल इसके साथ किया जा रहा है GridLayoutManager एक जैसी सुविधाएं देता है GridView लेआउट.
  • StaggeredGridLayoutManager: आइटम को दो-डाइमेंशन वाले ग्रिड में व्यवस्थित करता है. साथ ही, हर कॉलम को थोड़ा ऑफ़सेट करता है से पहले वाली तस्वीर, जैसे कि अमेरिकी झंडे पर तारे.

अगर ये लेआउट मैनेजर आपकी ज़रूरतों के मुताबिक नहीं हैं, तो अवधि को बढ़ाना RecyclerView.LayoutManager अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है ऐब्स्ट्रैक्ट क्लास.

आइटम के ऐनिमेशन जोड़ें

जब भी कोई आइटम बदलता है, तो RecyclerView एक ऐनिलेटर का इस्तेमाल करता है काफ़ी कम कर सकते हैं. यह ऐनिमेटर एक ऐसा ऑब्जेक्ट है जो ऐब्स्ट्रैक्ट को बड़ा करता है RecyclerView.ItemAnimator अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है क्लास. डिफ़ॉल्ट रूप से, RecyclerView DefaultItemAnimator डालें. अगर आपको पसंद के मुताबिक बनाए गए ऐनिमेशन देने हैं, तो RecyclerView.ItemAnimator.

सूची-आइटम चुनना चालू करें

कॉन्टेंट बनाने recyclerview-selection लाइब्रेरी से उपयोगकर्ता, टच का इस्तेमाल करके RecyclerView सूची में आइटम चुन सकते हैं या माउस इनपुट पर क्लिक करें. इससे आपको किसी चुना गया आइटम. आपके पास, चुने गए विकल्पों को कंट्रोल करने वाली नीतियों का भी कंट्रोल रखने का विकल्प है व्यवहार, जैसे कि कौनसे आइटम चुने जा सकते हैं और कितने आइटम चुने जाएंगे.

RecyclerView इंस्टेंस में चुनने का विकल्प जोड़ने के लिए, यह तरीका अपनाएं यह तरीका अपनाएं:

  1. यह तय करें कि किस तरह की चुनने वाली कुंजी का इस्तेमाल करना है. इसके बाद, ItemKeyProvider.

    चुने गए आइटम की पहचान करने के लिए, इन तीन मुख्य टाइप का इस्तेमाल किया जा सकता है:

    • Parcelable अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है सब-क्लास हैं, जैसे Uri
    • String
    • Long

    कुंजी के टाइप के बारे में ज़्यादा जानने के लिए, देखें SelectionTracker.Builder.

  2. लागू करना ItemDetailsLookup.
  3. ItemDetailsLookup की मदद से, चुनी गई लाइब्रेरी को ऐक्सेस किया जा सकता है RecyclerView आइटम के बारे में जानकारी MotionEvent. यह असल में ItemDetails वे इंस्टेंस जिनका बैक अप लिया जाता है या जिन्हें RecyclerView.ViewHolder इंस्टेंस.

  4. आइटम अपडेट करें View ऑब्जेक्ट में RecyclerView से पता चलता है कि उपयोगकर्ता, चेकबॉक्स से चुने हुए का निशान हटा देता है.

    चयन लाइब्रेरी इसके लिए डिफ़ॉल्ट विज़ुअल सजावट नहीं देती है चुने गए आइटम. लागू करते समय यह जानकारी दें onBindViewHolder(). हमारा सुझाव है कि आप यह तरीका अपनाएं:

    • onBindViewHolder() में कॉल करें setActivated()नहीं setSelected()—चालू View ऑब्जेक्ट, true या false, यह इस बात पर निर्भर करता है कि आइटम चुना गया है.
    • चालू होने की स्थिति दिखाने के लिए व्यू की स्टाइल अपडेट करें. बुध इसका इस्तेमाल करने की सलाह दी जाती है रंग की स्थिति सूची संसाधन का इस्तेमाल करें.
  5. ActionMode का इस्तेमाल करें उपयोगकर्ता को उसके चुने गए विकल्प पर कार्रवाई करने के लिए टूल उपलब्ध कराएं.
  6. रजिस्टर करें SelectionTracker.SelectionObserver अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है ताकि चुने गए विकल्प में बदलाव होने पर आपको सूचना दी जा सके. जब पहली बार कोई चुनाव बनाया जाता है, उपयोगकर्ता को इसे प्रज़ेंट करने और उपलब्ध कराने के लिए, ActionMode शुरू करें कार्रवाइयां तय की जा सकती हैं. उदाहरण के लिए, आप डेटा मिटाने के लिए, ActionMode बार और बार में मौजूद बैक ऐरो को कनेक्ट करें चुनें. कोई चयन खाली हो जाने पर—अगर उपयोगकर्ता फ़ाइल को साफ़ कर देता है आखिरी बार चुनना—कार्रवाई मोड खत्म करना.

  7. कोई भी दूसरी कार्रवाई करें.
  8. इवेंट प्रोसेस करने वाली पाइपलाइन के आखिर में, लाइब्रेरी यह तय कर सकती है कि कि उपयोगकर्ता किसी आइटम पर टैप करके उसे चालू करने की कोशिश कर रहा है या किसी आइटम या चयनित आइटम के सेट को खींचने का प्रयास कर रहा है. इन पर अपनी प्रतिक्रिया दें व्याख्या करने के लिए, सही लिसनर को रजिस्टर करें. ज़्यादा के लिए जानकारी, देखें SelectionTracker.Builder.

  9. SelectionTracker.Builder के साथ सभी डेटा इकट्ठा करें.
  10. नीचे दिए गए उदाहरण में इन हिस्सों को एक साथ रखने का तरीका बताया गया है:

    Kotlin

        var tracker = SelectionTracker.Builder(
            "my-selection-id",
            recyclerView,
            StableIdKeyProvider(recyclerView),
            MyDetailsLookup(recyclerView),
            StorageStrategy.createLongStorage())
                .withOnItemActivatedListener(myItemActivatedListener)
                .build()
        

    Java

        SelectionTracker tracker = new SelectionTracker.Builder<>(
                "my-selection-id",
                recyclerView,
                new StableIdKeyProvider(recyclerView),
                new MyDetailsLookup(recyclerView),
                StorageStrategy.createLongStorage())
                .withOnItemActivatedListener(myItemActivatedListener)
                .build();
        

    किसी SelectionTracker अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है उदाहरण के लिए, आपके ऐप्लिकेशन को RecyclerView.Adapter जिसे आप RecyclerView को शुरू करने के लिए इस्तेमाल करते हैं SelectionTracker.Builder. इस कारण से, SelectionTracker इंस्टेंस, इसे अपने RecyclerView.Adapter. ऐसा न करने पर, आप किसी आइटम की स्थिति को onBindViewHolder() तरीके से चुना गया है.

  11. इसमें चुने गए आइटम को इसमें शामिल करें: गतिविधि लाइफ़साइकल इवेंट के बारे में ज़्यादा जानें.
  12. गतिविधि के लाइफ़साइकल इवेंट में चुने गए विकल्प की स्थिति को बनाए रखने के लिए, आपका ऐप्लिकेशन को चयन ट्रैकर के onSaveInstanceState() अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है और onRestoreInstanceState() ऐक्टिविटी के तरीके onSaveInstanceState() और onRestoreInstanceState() विधियों का भी इस्तेमाल किया जा सकता है. आपके ऐप्लिकेशन को SelectionTracker.Builder कंस्ट्रक्टर. यह आईडी ज़रूरी है, क्योंकि किसी ऐक्टिविटी या फ़्रैगमेंट में एक से ज़्यादा अलग-अलग, चुनी जा सकने वाली सूची हो सकती है, इन सभी को अपनी सेव की गई स्थिति में बनाए रखना ज़रूरी है.

अन्य संसाधन

ज़्यादा जानकारी के लिए, ये रेफ़रंस देखें.