我正在开发一个应用程序,我需要在其中获取文件列表,从中读取一些数据,并在 ListView 中显示所有这些文件,并根据该数据进行排序。
问题是它们可能很多,因此将它们全部加载需要时间。我可以选择异步加载它们(在一个线程中),或者显示一个加载框。我对第一个有问题:ArrayAdapter正在填充,然后最后排序,所以当所有项目都在那里时,列表没有排序。我想到的解决方案是:
每次插入项目时,我都想对列表进行排序,但这会使过程变得更慢……但是,还是有这个,但我不确定我是否理解如何使用这种排序算法。
使用某种排序数组,如此处所述。我不确定如何/是否可以使用
ArrayAdapter.忘记使用线程来填充
ListView. 只需添加“正在加载”消息或根本不添加任何内容。将文件中的数据存储在数据库中,使用存储文件的路径,并从数据库中读取所有条目。但我不确定这会使这个过程更快......
la = new ArrayAdapter(this, R.layout.list_item);
设置列表适配器(拉);
处理程序处理程序=新处理程序(){
公共无效句柄消息(消息消息){
开关(消息。什么){
案例 TrackBrowser.DID_SUCCEED: {
// 当线程完成查找项目列表时调用
// mComparator 是我自己的 Comparator
la.sort(mComparator);
休息;
}
案例TrackBrowser.ADD:{
// 每次解析一个项目时都会调用它
TrackBrowser.TrackView tv = (TrackBrowser.TrackView) message.obj;
la.add(tv);
// 我应该每次都在这里排序吗?
//la.sort(mComparator);
休息;
}
}
}
};
// 这个类只是遍历 listFiles 返回的文件并发送消息。
TrackBrowser tb = new TrackBrowser(handler);
线程线程 = 新线程(tb);
线程.start();
我需要您对我应该使用哪种解决方案以及如何使用前两个(如果我应该使用它们)提供反馈?
非常感谢。