我们目前正在开发一个应用程序,它在“寄存器”和行中显示大数据集。我们使用TableLayout作为基本视图,然后为每个项添加表行(每行都有一个LinearLayout)。
我注意到,一旦记录数量超过某一点(1000多条记录),设备就会大幅减速。我确信这是一个简单的内存问题(可能也是渲染?)并设计了一个可以提高速度的计划。
我们已经在很多silverlight项目上实现了连续分页,我认为这是采用Android的最佳方法吗?
我现在唯一的问题是识别特定视图(比如第100行)何时滚动到视图中,以便我可以开始渲染下几行。
有谁知道如何做到这一点,或者更好的方法来实现/处理大型数据集?
此致
答案 0 :(得分:0)
而不是使用表格布局使用CustomListView,它具有重用行的能力。
您可以在此处找到如何使用自定义列表视图。
[Custom ListView][1]
答案 1 :(得分:0)
您只需将onScrollListener添加到View上即可。 最好使用ListView来显示数据
从以下代码中,您可以获得当前视图的索引。
ListView.OnScrollListener是您需要实现并赋予body的接口 以下两种方法。
listView.setOnScrollListener(new ListView.OnScrollListener(){
public void onScroll(AbsListView视图,int firstVisibleItem,int visibleItemCount, int totalItemCount){ }
public void onScrollStateChanged(AbsListView view, int scrollState) {
switch (scrollState) {
case OnScrollListener.SCROLL_STATE_IDLE:
mBusy = false;
int first = view.getFirstVisiblePosition();
int count = view.getChildCount();
break;
case OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:
break;
case OnScrollListener.SCROLL_STATE_FLING:
break;
}
}
});
尝试打印first和count变量的值,它将解决您的问题。希望:)
答案 2 :(得分:0)
我认为这段视频应该对你非常有益 http://www.google.com/events/io/2010/sessions/world-of-listview-android.html
这说明了您遇到的确切问题以及如何解决问题!