如何知道视图何时滚动到视图中

时间:2010-12-14 17:42:29

标签: android

我们目前正在开发一个应用程序,它在“寄存器”和行中显示大数据集。我们使用TableLayout作为基本视图,然后为每个项添加表行(每行都有一个LinearLayout)。

我注意到,一旦记录数量超过某一点(1000多条记录),设备就会大幅减速。我确信这是一个简单的内存问题(可能也是渲染?)并设计了一个可以提高速度的计划。

我们已经在很多silverlight项目上实现了连续分页,我认为这是采用Android的最佳方法吗?

我现在唯一的问题是识别特定视图(比如第100行)何时滚动到视图中,以便我可以开始渲染下几行。

有谁知道如何做到这一点,或者更好的方法来实现/处理大型数据集?

此致

3 个答案:

答案 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

这说明了您遇到的确切问题以及如何解决问题!