我有一个大型CSV文件(大约12000行),我需要在ListView中解析和显示。
我不想将整个文件加载到内存中,我想在10行组中读取它,当用户单击“加载更多”按钮时,将读取接下来的10行,依此类推。
有关如何以有效方式实现这一目标的任何建议?
由于
答案 0 :(得分:1)
嗯,这是可能的起点:
步骤1:创建一个ArrayAdapter
,其数据模型是您的读入行数组
步骤2:覆盖getCount()
以返回数组大小加1,以适应额外的"加载更多"行
步骤3:覆盖getViewTypeCount()
以返回2(或更多,如果CSV行的ListView
行不完全相同 - 我将假设它们完全相同这个答案,所以这两种类型是"常规行"和"'加载更多'行")
步骤#4:覆盖getItemViewType()
以在位置等于数组大小时返回1,或者对于低于该数据的所有内容返回0
步骤5:覆盖getView()
以返回相应的行,包括返回"加载更多"行
步骤#6:当用户点击"加载更多"行,运行您的逻辑以读取下一个CSV行,将它们添加到您的数组,然后调用适配器上的notifyDataSetChanged()
以警告ListView
数据已更改