我正在开发一个应用程序,我需要在其中获取文件列表,从中读取一些数据,并在 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();
我需要您对我应该使用哪种解决方案以及如何使用前两个(如果我应该使用它们)提供反馈?
非常感谢。