android中数组自动排序,android – 对ArrayAdapter或ArrayList的内容进行排序

我正在研究

android项目,并正在使用从SQLite数据库中检索数据的ListView.

我正在使用ArrayList创建数据集,然后将此ArrayList添加到ArrayAdapter中.

当从数据库中检索数据时,我告诉SQLite进行排序,以便在将其添加到ListView时,所有内容都按字母顺序排列.在某些时候,信息将动态添加到ListView,而不需要再次从数据库中重新获取所有内容.但是,我想按字母顺序保留所有内容.

我该怎么做,我是否对DataSet进行排序,然后调用notifyDataSet Changes或直接在ArrayAdapter上进行排序.我已经考虑在ArrayAdapter上执行排序,但是这需要一个使用Comparator的参数但不确定它是什么,并且找不到任何可能对我想要实现的任何帮助的工作示例.

下面是填充数组并设置列表适配器的代码

ArrayList passwords = managePasswordList.getPasswordList();

if (passwords != null && passwords.size() > 0)

{

passwordArrayAdapter = new ArrayAdapter(getActivity().getApplicationContext(),

android.R.layout.simple_list_item_activated_1, passwords);

setListAdapter(passwordArrayAdapter);

myListView.setTextFilterEnabled(true);

txtNoRecords.setVisibility(View.GONE);

}

else

{

txtNoRecords.setVisibility(View.VISIBLE);

}

然后,我将数据添加到数据集并使用以下内容刷新列表视图

String company = Encryption.decrypt(passwords.get(i).company);

String username = Encryption.decrypt(passwords.get(i).username);

details = Html.fromHtml(company + "
" + "" + username + "");

passwords.add(细节);

passwordArrayAdapter.notifyDataSetChanged();

感谢您的任何帮助,您可以提供.

更新1

我已经尝试过做Nick Bradbury的建议,但我对比较器有问题.我有以下代码,但我不知道从哪里开始.

SQLiteDatabase myDb = null;

Cursor cursor = null;

ArrayList passwords = new ArrayList();

try

{

myDb = context.openOrCreateDatabase("PasswordManager", Context.MODE_PRIVATE, null);

cursor = myDb.rawQuery("SELECT * FROM password ASC", null);

while (cursor.moveToNext())

{

final String company = Encryption.decrypt(cursor.getString(2));

final String username = Encryption.decrypt(cursor.getString(4));

Spanned details = Html.fromHtml(company + "
" + "" + username + "");

passwords.add(details);

Collections.sort(passwords, new Comparator() {

public int compare(Spanned lhs, Spanned rhs) {

return 0;

}

});

}

}

catch (SQLiteException ex)

{

common.showBasicAlertDialog("Unfortunately something has gone wrong.\n\nWe will fix this as soon as we can", false);

Log.e("Database Error", ex.toString());

return null;

}

在return语句中我不知道该怎么做,我已经尝试返回lhs.compareTo但是lhs和rhs变量没有compareTo函数,所以我不知道该怎么做.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值