Sort items in recyclerview بر اساس Alphabet

پرسیده شده
فعالیت 1243 روز پیش
دیده شده 555 بار
1

سلام خسته نباشید

1 من وقتی یه چیزی رو به recycler اضافه می کنم و بعد از اپلیکیشن خارج می شم و وارد می شم اونی که اخر از همه اضافه شده رو اخر نشون می ده من می خواستم اون فایلی رو که اخر از همه اضافه شده رو اول نشون بده 

2 چطور می تونیم نشون دادن فایل ها رو در recycler بر اساس حروف الف با بکنیم ؟؟

ممنون

فایل پیوست

2
حذف شده

سلام و احترام

 

درسته وقتی شما صرفا از متد add(۰,itam)l استفاده کنید در همان لحظه لیست شما مرتب شده ولی وقتی از اپلیکیشن بیرون بروید و دوباره وارد شوید آیتم افزوده شده به انتهای صفحه میروند

تا جایی که اطلاع دارم هر دو سوال شما در پروژه فروشگاهی بررسی خواهد شد (sort کدن ایتم ها) .

در اینجا چون بحث دیتابیس نیست نمیتوانیم در مدل خود رفته و بر روی Query خود عمل sort بر اساس (ای دی یا نام خانوادگی و..) طبق چیزی که در جواب سوال های پیشین شما گفته شد انجام دهیم(یاداوری با استفاده از  ORDER)

پس من برای شما یک اموزش ۴ دقیقه ای کوتاه قرار میدهم که به راحتی این موضوع sort سازی (چه بر اساس تاریخ چه بر اساس الفبا و..) رو فرا بگیرید. 

https://www.youtube.com/watch?v=aMw۴d۷uWNW۸&t=۱۶۵s

که پس از دیدن این اموزش شما میتوانید هنگام دریافت فایل یعنی :

File[] files = currentFolder.listFiles();
fileAdapter = new FileAdapter(Arrays.asList(files), this);

لیستی از ایتم های مرتب شده بر اساس date(یا الفبا) تهیه کنید و به عنوان ارگومان به FileAdapter پاس دهید.

بدین شکل هر زمان که اپلیکیشن اجرا شود ایتم ها طبق چیزی که شما مشخص کردید نمایش داده میشوند.

به عبارتی طبق اموزشی که خدمت شما ارسال کردم :

در استک اور فلو سوال مشابه پرسش شما پرسیده شده هست (روش جاوا 7 و  روش جاوا 8 ):

https://stackoverflow.com/questions/۲۰۳۰۳۰/best-way-to-list-files-in-java-sorted-by-date-modified-

مرتب سازی بر اساس date :

(موارد زیر صرفا مثال هستند پس کد های مربوطه رو طبق اموزش بسته به سناریو تان خودتون بنویسید)

final File[] sortedByDate = folder.listFiles();

if (sortedByDate != null && sortedByDate.length > 1) {
        Arrays.sort(sortedByDate, new Comparator<File>() {
             @Override
             public int compare(File object1, File object2) {
                return (int) ((object1.lastModified() > object2.lastModified()) ? object1.lastModified(): object2.lastModified());
             }
    });
}

یا

مرتب سازی بر اساس نام‌:

final File[] sortedFileName = images.listFiles()

if (sortedFileName != null && sortedFileName.length > 1) {
        Arrays.sort(sortedFileName, new Comparator<File>() {
             @Override
             public int compare(File object1, File object2) {
                return object1.getName().compareTo(object2.getName());
             }
    });
}
فایل پیوست

پوریا شفیعی

توسط

پوریا شفیعی

10 آذر 99

1
حذف شده

سلام احترام

 

پاسخ سوال یک : برای این گزینه میتونید پارامتر ReverseLayout در متد setLayoutManager ، ریساکلر ویو را برابر true قرار دهید یا اینکه هنگام استفاده از متد add لیست آن را در ایندکس 0 ذخیره کنید.

tasks.add(0, task);

 

پاسخ سوال دو : شما میتونید روی ArrayList متد Sort رو call کنید که البته اگر برای گرفتن دیتا از دیتابیس استفاده کنید میتونید عمل Sort داده را در Query قرار دهید.

 

با آرزوی موفقیت

فایل پیوست

Hamidreza Karimi

توسط

Hamidreza Karimi

10 آذر 99