gpt4 book ai didi

java - ArrayList 按 ListView 单元格的 KEY 值排序

转载 作者:行者123 更新时间:2023-12-01 12:34:17 25 4
gpt4 key购买 nike

我有一个 ListView,显示时间和日期以及一些与问题无关的其他信息。它们存储在 ArrayList Hashmap 中。当加载到 ListView 中时,它们默认按 ID 组织,而是需要按日期和时间组织。这是我到目前为止的代码。

public void loadListView() {
productsList = new ArrayList<HashMap<String, Object>>();
lv = (ListView) getActivity().findViewById(R.id.listview);
lv.setTextFilterEnabled(true);
DatabaseHandler db = new DatabaseHandler(getActivity());
List<SalesCall> salescall = db.getAllSalescalls();
lv = (ListView) getActivity().findViewById(R.id.listview);
for (SalesCall cn : salescall) {
HashMap<String, Object> map = new HashMap<String, Object>();
map.put(KEY_ID, cn.getID());
map.put(KEY_NAME, cn.getDoctor());
map.put(KEY_TIME, cn.getScheduled_time());
map.put(KEY_DATE, cn.getScheduled_Date());
map.put(KEY_ALL, cn.getAccount() + ":" + cn.getDoctor());
productsList.add(map);

}

adapter = new ExtendedSimpleAdapter(
getActivity(), productsList,
R.layout.listview_item_layout_salescall,
new String[]{KEY_ID, KEY_NAME, KEY_TIME, KEY_DATE, KEY_ALL},
new int[]{R.id.id, R.id.fname, R.id.Time, R.id.Date, R.id.All});
// updating listview

lv.setAdapter(adapter);
db.close();
}

我将如何相应地对数据进行排序?

编辑:比较代码

  @Override
public int compare(SalesCall lhs, SalesCall rhs) {
if (lhs.getScheduled_Date() == null || rhs.getScheduled_Date() == null)
return 0;
return lhs.getScheduled_Date().compareTo(rhs.getScheduled_Date());
}

最佳答案

HashMap 的实现不提供任何项目的顺序。 ArrayList 保持添加数据的顺序。您应该更改流程以获得预期的结果。

这是您需要的流程:

  1. 按有效顺序获取数据
  2. 创建映射
  3. 显示

在您的代码中使用方法

List<SalesCall> salescall = db.getAllSalescalls();

如果您按要求的顺序提供了这些数据,那么您无需在映射之前对它们进行排序

List<SalesCall> salesCallByDate = db.getSalesCallsAndSortBy(R.id.Date, R.id.Time);

然后,当您遍历此列表并创建映射到存储在新列表中的 map 时,顺序将保持不变。

关于java - ArrayList<HashMap<String, Object> 按 ListView 单元格的 KEY 值排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25704677/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com