如何在 RecyclerView 中对字符串元素进行排序?
Posted
技术标签:
【中文标题】如何在 RecyclerView 中对字符串元素进行排序?【英文标题】:How to sort string elements in RecyclerView? 【发布时间】:2021-11-23 20:09:21 【问题描述】:我在 RecyclerView 中有 5 个元素(取自 DB 的元素),其中包含日期和文本。两个不同的列表。对于日期和字符串。一个片段包含 1 个日期和 1 个字符串文本。所以,我需要按日期对元素进行排序,就像那样
我想要的结果
text1 10.09.2021
text2 13.09.2021
text3 30.09.2021
text4 1.12.2021
我得到的结果
text3 30.09.2021
text4 1.12.2021
text1 10.09.2021
text2 13.09.2021
文本和日期是两个不同的列表
问题是,我如何将日期排序为字符串(可能是?)而不会丢失文本,以及我应该在哪里执行此操作(从数据库获取之后和在适配器中检索数据之前?或加载元素之后在适配器中,然后让它们返回进行排序(看起来很糟糕)
这就是我如何从数据库中获取数据并在适配器中检索
List<String> reminder = new ArrayList<>();
List<String> date = new ArrayList<>();
Calendar test = Calendar.getInstance();
long pars = test.getTimeInMillis();
System.out.println(pars);
dbf.child("Reminders").addValueEventListener(new ValueEventListener()
@Override
public void onDataChange(@NonNull DataSnapshot snapshot)
reminder.clear();
date.clear();
for(DataSnapshot child2 : snapshot.getChildren()) // getting a data from DB to ArrayList for dropping into Adapter
for(DataSnapshot tChild : child2.getChildren())
if (tChild.getKey().equals("text"))
reminder.add(tChild.getValue().toString());
rem = reminder.toArray(new String[reminder.size()]);
if (tChild.getKey().equals("date"))
date.add(tChild.getValue().toString());
dat = date.toArray(new String[date.size()]);
mainRowAdapter rAdapter = new mainRowAdapter(MainActivity.this, rem,dat);
rv.setAdapter(rAdapter);
rv.setLayoutManager(new LinearLayoutManager(MainActivity.this));
@Override
public void onCancelled(@NonNull DatabaseError error)
);
AdapterClass 中的setText
holder.reminder.setText(reminder[position]);
holder.date.setText(date[position]);
在另一个主题中,我看到了这个,但这对我的情况没有帮助吗?可能存在一些类比吗?
Collections.sort(categories, new Comparator<Categories>()
@Override
public int compare(Categories lhs, Categories rhs)
return lhs.title.compareTo(rhs.title);
);
【问题讨论】:
您介意重新表述您的问题吗?并且可能提供现有行为与预期行为的示例。 更新了我的问题 【参考方案1】:对数据进行排序的最佳位置是当您通过查询从 db 获取数据时,但如果您想在列表中手动进行排序,保存日期的最佳格式如下:
2021.09.10
2021.09.13
2021.09.30
2021.12.01
因为字符串排序可以应用于您的日期。 要按降序对日期进行排序,您可以简单地使用:
collections.reverseorder();
【讨论】:
但是我怎样才能对我的文本数组进行排序呢?与日期的位置相同?以上是关于如何在 RecyclerView 中对字符串元素进行排序?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 FOR 循环中对 Python Pandas 列表中的元素执行字符串更改
如何在 Android RecyclerView 上对字符串进行排序?