سفارشی کردن لیست پویا بخشی از Android Jetpack .

روش Compose را امتحان کنید
Jetpack Compose جعبه ابزار UI توصیه شده برای اندروید است. نحوه کار با طرح‌بندی‌ها در Compose را بیاموزید.

شما می توانید اشیاء RecyclerView برای رفع نیازهای خاص خود سفارشی کنید. کلاس های استانداردی که در Create dynamic lists with RecyclerView توضیح داده شده است، تمام قابلیت هایی را که اکثر توسعه دهندگان به آن نیاز دارند را ارائه می دهند. در بسیاری از موارد، شما فقط نیاز دارید که برای هر یک از دارندگان view، نما را طراحی کنید و کدی را بنویسید تا آن نماها با داده های مناسب به روز شوند. با این حال، اگر برنامه شما الزامات خاصی دارد، می‌توانید رفتار استاندارد را به روش‌های مختلفی تغییر دهید. این سند برخی از سفارشی سازی های ممکن را شرح می دهد.

طرح بندی را اصلاح کنید

RecyclerView از یک مدیر طرح‌بندی برای قرار دادن موارد منفرد روی صفحه و تعیین زمان استفاده مجدد از نماهای موردی که دیگر برای کاربر قابل مشاهده نیستند استفاده می‌کند. برای استفاده مجدد - یا بازیافت - یک نما، یک مدیر طرح‌بندی ممکن است از آداپتور بخواهد که محتوای نما را با عنصری متفاوت از مجموعه داده جایگزین کند. بازیافت نماها از این طریق با اجتناب از ایجاد نماهای غیر ضروری یا انجام جستجوهای گرانقیمت findViewById() عملکرد را بهبود می بخشد. کتابخانه پشتیبانی اندروید شامل سه مدیر طرح‌بندی استاندارد است که هر کدام گزینه‌های سفارشی‌سازی زیادی را ارائه می‌دهند:

  • LinearLayoutManager : موارد را در یک لیست تک بعدی مرتب می کند. استفاده از RecyclerView با LinearLayoutManager عملکردی مانند چیدمان ListView را فراهم می کند.
  • GridLayoutManager : موارد را در یک شبکه دو بعدی، مانند مربع‌های روی صفحه شطرنجی، مرتب می‌کند. استفاده از RecyclerView با GridLayoutManager عملکردی مانند طرح بندی GridView را فراهم می کند.
  • StaggeredGridLayoutManager : موارد را در یک شبکه دوبعدی مرتب می کند که هر ستون کمی از ستون قبلی فاصله دارد، مانند ستاره های پرچم آمریکا.

اگر این مدیران طرح‌بندی با نیازهای شما مطابقت ندارند، می‌توانید با گسترش کلاس انتزاعی RecyclerView.LayoutManager کلاس خود را ایجاد کنید.

انیمیشن مورد را اضافه کنید

هر زمان که یک آیتم تغییر می کند، RecyclerView از یک انیماتور برای تغییر ظاهر آن استفاده می کند. این انیماتور یک شی است که کلاس RecyclerView.ItemAnimator انتزاعی را گسترش می دهد. به طور پیش فرض، RecyclerView از DefaultItemAnimator برای ارائه انیمیشن استفاده می کند. اگر می‌خواهید انیمیشن‌های سفارشی ارائه کنید، می‌توانید با گسترش RecyclerView.ItemAnimator شی انیماتور خود را تعریف کنید.

انتخاب مورد فهرست را فعال کنید

کتابخانه recyclerview-selection به کاربران این امکان را می دهد که با استفاده از ورودی لمسی یا ماوس، موارد موجود در لیست RecyclerView را انتخاب کنند. این به شما امکان می دهد تا کنترل بصری یک مورد انتخاب شده را حفظ کنید. همچنین می‌توانید روی خط‌مشی‌هایی که رفتار انتخاب را کنترل می‌کنند، کنترل داشته باشید، مانند مواردی که برای انتخاب واجد شرایط هستند و چند مورد می‌توانند انتخاب شوند.

برای افزودن پشتیبانی انتخاب به یک نمونه RecyclerView ، این مراحل را دنبال کنید:

  1. نوع کلید انتخابی مورد استفاده را تعیین کنید، سپس یک ItemKeyProvider بسازید.

    سه نوع کلیدی وجود دارد که می توانید برای شناسایی موارد انتخاب شده استفاده کنید:

    برای اطلاعات دقیق در مورد انواع کلید انتخاب، به SelectionTracker.Builder مراجعه کنید.

  2. Implement ItemDetailsLookup .
  3. ItemDetailsLookup به کتابخانه انتخابی امکان دسترسی به اطلاعات مربوط به موارد RecyclerView را می دهد که MotionEvent داده شده است. این در واقع یک کارخانه برای نمونه های ItemDetails است که توسط یک نمونه RecyclerView.ViewHolder پشتیبان گیری می شوند یا از آن استخراج می شوند.

  4. View RecyclerView به‌روزرسانی کنید.

    کتابخانه انتخاب یک دکوراسیون بصری پیش فرض برای موارد انتخاب شده ارائه نمی دهد. این را هنگام پیاده سازی onBindViewHolder() ارائه دهید. ما روش زیر را توصیه می کنیم:

    • در onBindViewHolder() ، بسته به انتخاب آیتم، روی شی View با true یا false ، setActivated()not setSelected() را فراخوانی کنید.
    • برای نمایش وضعیت فعال، استایل نمای را به روز کنید. توصیه می کنیم از یک منبع فهرست حالت رنگ برای پیکربندی استایل استفاده کنید.
  5. از ActionMode برای ارائه ابزارهایی به کاربر برای انجام یک عمل در انتخاب استفاده کنید.
  6. یک SelectionTracker.SelectionObserver را ثبت کنید تا هنگام تغییر انتخاب به شما اطلاع داده شود. هنگامی که یک انتخاب برای اولین بار ایجاد شد، ActionMode برای ارائه آن به کاربر و ارائه اقدامات خاص انتخاب راه اندازی کنید. به عنوان مثال، می توانید یک دکمه حذف را به نوار ActionMode اضافه کنید و برای پاک کردن انتخاب، فلش عقب روی نوار را وصل کنید. هنگامی که انتخاب خالی می شود - اگر کاربر آخرین بار انتخاب را پاک کند - حالت عمل را خاتمه دهید.

  7. هرگونه اقدام ثانویه تفسیر شده را انجام دهید.
  8. در پایان خط لوله پردازش رویداد، کتابخانه ممکن است تشخیص دهد که کاربر در حال تلاش برای فعال کردن یک مورد، با ضربه زدن بر روی آن است، یا در حال تلاش برای کشیدن یک مورد یا مجموعه ای از موارد انتخاب شده است. با ثبت شنونده مناسب به این تفاسیر واکنش نشان دهید. برای اطلاعات بیشتر، به SelectionTracker.Builder مراجعه کنید.

  9. همه چیز را با SelectionTracker.Builder جمع کنید.
  10. مثال زیر نحوه چیدن این قطعات را در کنار هم نشان می دهد:

    کاتلین

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

    جاوا

        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 ارائه کند. این شناسه مورد نیاز است زیرا یک فعالیت یا یک قطعه ممکن است بیش از یک لیست متمایز و قابل انتخاب داشته باشد که همه آنها باید در حالت ذخیره شده خود باقی بمانند.

منابع اضافی

برای اطلاعات بیشتر به منابع زیر مراجعه کنید.